Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah Peningkatan Facebook Graph API v2.3 Menyebabkan Isu Keserasian?

Mengapakah Peningkatan Facebook Graph API v2.3 Menyebabkan Isu Keserasian?

Patricia Arquette
Lepaskan: 2024-12-09 17:03:11
asal
662 orang telah melayarinya

Why are Facebook Graph API v2.3 Upgrades Causing Compatibility Issues?

Isu Keserasian Facebook Graph API v2.3

Memandangkan tarikh akhir hayat untuk Graph API v2.2 menghampiri, pembangun akan digalakkan untuk menaik taraf kepada v2.3. Walau bagaimanapun, ramai yang menghadapi isu yang tidak dijangka semasa membuat suis.

Tiada Respons API

Permintaan seperti berikut, digunakan untuk mengambil data album, tidak lagi mengembalikan sebarang hasil :

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}
Salin selepas log masuk

Kehilangan Profil Pengguna Maklumat

Panggilan ke titik akhir pengguna tidak lagi menyertakan medan "hari jadi":

https://graph.facebook.com/v2.3/{$user_id}
Salin selepas log masuk

Penyelesaian

Punca punca isu ini terletak pada Facebook SDK versi 3.2.2, yang serasi dengan PHP versi 5.3. Perubahan ketara dalam format Token Akses OAuth v2.3 memerlukan SDK untuk menghuraikan respons sebagai JSON, bukannya format yang dikodkan URL yang digunakan dalam versi terdahulu.

Kemas Kini Kod SDK

Untuk menangani isu ini, kemas kini fungsi getAccessTokenFromCode dalam SDK untuk menghuraikan respons sebagai JSON:

$response = json_decode($access_token_response);
if (!isset($response->access_token)) {
  return false;
}
return $response->access_token;
Salin selepas log masuk

Perubahan Tambahan

Selain itu, perubahan serupa perlu dibuat pada fungsi setExtendedAccessToken() untuk memastikan sambungan token yang betul dan mengelakkan potensi isu dengan pendek -token hidup. Kod yang dikemas kini adalah seperti berikut:

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
);
}
Salin selepas log masuk

Dengan melaksanakan perubahan ini, pembangun boleh memastikan apl mereka terus berfungsi seperti yang diharapkan di bawah Facebook Graph API v2.3.

Atas ialah kandungan terperinci Mengapakah Peningkatan Facebook Graph API v2.3 Menyebabkan Isu Keserasian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan