Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah PHP SDK Facebook `getUser()` Sentiasa Mengembalikan 0?
Dalam membangunkan aplikasi web yang berinteraksi dengan Facebook, isu getUser() secara konsisten mengembalikan 0 selalunya dihadapi. Ini boleh menghalang akses kepada maklumat pengguna yang diperlukan dan mengakibatkan ralat pengesahan.
Satu sebab yang berpotensi untuk tingkah laku ini terletak pada pergantungan PHP SDK pada pembolehubah $_REQUEST, yang mungkin tidak bergabung dengan betul dengan pembolehubah permintaan lain ($ _GET, $_POST dan $_COOKIE) dalam persekitaran anda. Versi PHP juga boleh memainkan peranan.
Memeriksa fungsi getCode() dalam fail base_facebook.php mendedahkan kod berikut:
protected function getCode() { if (isset($_REQUEST['code'])) { if ($this->state !== null && isset($_REQUEST['state']) && $this->state === $_REQUEST['state']) { // CSRF state has done its job, so clear it $this->state = null; $this->clearPersistentData('state'); return $_REQUEST['code']; } else { self::errorLog('CSRF state token does not match one provided.'); return false; } } return false; }
Untuk menangani isu ini, kami boleh mengubah suai ini berfungsi seperti berikut:
protected function getCode() { $server_info = array_merge($_GET, $_POST, $_COOKIE); if (isset($server_info['code'])) { if ($this->state !== null && isset($server_info['state']) && $this->state === $server_info['state']) { // CSRF state has done its job, so clear it $this->state = null; $this->clearPersistentData('state'); return $server_info['code']; } else { self::errorLog('CSRF state token does not match one provided.'); return false; } } return false; }
Pengubahsuaian ini menggabungkan semua pembolehubah permintaan ke dalam pembolehubah $server_info, yang memastikan bahawa fungsi getCode() boleh mengakses parameter kod daripada mana-mana sumber ini, tanpa mengira konfigurasi persekitaran PHP anda.
Atas ialah kandungan terperinci Mengapakah PHP SDK Facebook `getUser()` Sentiasa Mengembalikan 0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!