Facebook Graph API v2.3 Kompatibilitätsprobleme
Da sich das End-of-Life-Datum für Graph API v2.2 nähert, stehen Entwickler kurz davor Wir empfehlen ein Upgrade auf Version 2.3. Allerdings sind bei der Umstellung viele auf unerwartete Probleme gestoßen.
Fehlende API-Antworten
Anfragen wie die folgenden, die zum Abrufen von Albumdaten verwendet werden, geben keine Ergebnisse mehr zurück :
https://graph.facebook.com/v2.3/{$user_id}?date_format=U&fields=albums.order(reverse_chronological).limit(100).offset(0){id,count,name,created_time}
Verlust des Benutzerprofils Informationen
Anrufe an den Benutzerendpunkt enthalten nicht mehr das Feld „Geburtstag“:
https://graph.facebook.com/v2.3/{$user_id}
Lösung
Die Grundursache von Diese Probleme liegen bei Facebook SDK Version 3.2.2, das mit PHP Version 5.3 kompatibel ist. Eine wesentliche Änderung im OAuth-Zugriffstoken-Format von v2.3 erfordert, dass das SDK die Antwort als JSON analysiert, statt im URL-codierten Format, das in früheren Versionen verwendet wurde.
SDK-Code-Update
Um dieses Problem zu beheben, aktualisieren Sie die Funktion getAccessTokenFromCode im SDK, um die Antwort als zu analysieren JSON:
$response = json_decode($access_token_response); if (!isset($response->access_token)) { return false; } return $response->access_token;
Zusätzliche Änderungen
Außerdem müssen ähnliche Änderungen an der Funktion setExtendedAccessToken() vorgenommen werden, um eine ordnungsgemäße Token-Erweiterung sicherzustellen und potenzielle Probleme mit Short zu vermeiden -lebte Token. Der aktualisierte Code lautet wie folgt:
public function setExtendedAccessToken() { 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->getAppSecret(), '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; } //Version 2.3 and up. $response = json_decode($access_token_response); if (!isset($response->access_token)) { return false; } $this->destroySession(); $this->setPersistentData( 'access_token', $response->access_token ); }
Durch die Implementierung dieser Änderungen können Entwickler sicherstellen, dass ihre Apps weiterhin wie erwartet unter Facebook Graph API v2.3 funktionieren.
Das obige ist der detaillierte Inhalt vonWarum verursachen Upgrades der Facebook Graph API v2.3 Kompatibilitätsprobleme?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!