Ich versuche, 60 Tage facebook Zugriffstoken von Server Seite Anfrage zu bekommen. Nach Benutzer loged wird in I Zugriffstoken durch getAccessToken() -Funktion von Facebook SDK überprüfen und danach habe ich verwenden getExtendedAccessToken(), die ich irgendwo hier:Facebook Extended Access Token funktioniert nicht - aber alles scheint in Ordnung zu sein (?)
public function getExtendedAccessToken() {
try {
// need to circumvent json_decode by calling _oauthRequest
// directly, since response isn't JSON format.
$access_token_response =
$this->_oauthRequest(
$this->getUrl('graph', '/oauth/access_token'),
$params = array( 'client_id' => $this->getAppId(),
'client_secret' => $this->getApiSecret(),
'grant_type'=>'fb_exchange_token',
'fb_exchange_token'=>$this->getAccessToken(),
));
} catch (FacebookApiException $e) {
// most likely that user very recently revoked authorization.
// In any event, we don't have an access token, so say so.
return false;
}
if (empty($access_token_response)) {
return false;
}
$response_params = array();
parse_str($access_token_response, $response_params);
if (!isset($response_params['access_token'])) {
return false;
}
return $response_params['access_token'];
}
Unfortunanely es noch: How to extend access token validity since offline_access deprecation für 60 Tage Zugriffstoken fragen wird nicht meine Zugriffstoken arbeiten abgelaufen nach 2 Stunden, so habe ich versucht, auch diese:
public function getSimpleExtendedAccessToken(){
$request = 'https://graph.facebook.com/oauth/access_token?
client_id='. $this->getAppId().
'&client_secret=' .$this->getApiSecret().
'&grant_type=fb_exchange_token
&fb_exchange_token=' .$this->getAccessToken();
$response = file_get_contents($request);
$params = null;
parse_str($response, $params);
return $params['access_token'];
}
und dieses auch nach 2 Stunden abgelaufen. Aber wenn ich überprüft, was innerhalb des Arrays $params
in der zweiten Funktion dort geschrieben wurde:
Array ([access_token] => AAAFM5sO7 [...] [Ablauf] => 4897)
(Dieser Teil: „AAAFM5sO7[...]
“ ist natürlich meine Zugriffstoken Nummer)
Alle Zugriffstoken, die ich erhalten sind die gleichen: erste von getAccessToken()
, zweite von getExtendedAccessToken()
und dritte von getSimpleExtendedAccessToken()
.
Natürlich, wenn ich mehr und mehr für Extended Access Token fragen, die Ablaufnummer nicht erneuert, aber es zählt, und das ist aus der Sicht der Facebook-Dokumentation korrekt, weil Sie nicht fragen können jeden Moment ein neues Zugriffstoken, aber warum kann ich kein 60-Tage-Zugangstoken bekommen?
Kann jemand mir helfen, weil ich ein bisschen cofused bin?
Es könnte sich lohnen, den Fehler in Ihrem 'try' /' catch' Block zu finden, da dieser den Schlüssel enthalten könnte. Speichern Sie es in einer Textdatei; Ich glaube, die Facebook-Beispiele haben einfach "error_log ($ e)". –
Ich denke nicht, weil ich ein Zugriffs-Token von der ersten Funktion 'getExtendedAccessToken()' erhalten habe, nicht falsch, wie es in der Fehler-Sektion von 'try/cach' angezeigt wird. Auch die zweite Funktion 'getSimplyExtendedAccessToken()' gibt mir ein gültiges Zugriffs-Token - und diese zweite Funktion hat keinen 'try/cach'-Abschnitt. – Ziemo
... so niemand weiß, wie dieses Problem zu lösen? – Ziemo