Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt das PHP SDK „getUser()' von Facebook immer 0 zurück?
Bei der Entwicklung von Webanwendungen, die mit Facebook interagieren, tritt häufig das Problem auf, dass getUser() ständig 0 zurückgibt angetroffen. Dies kann den Zugriff auf notwendige Benutzerinformationen behindern und zu Authentifizierungsfehlern führen.
Ein möglicher Grund für dieses Verhalten liegt in der Abhängigkeit des PHP SDK von der Variablen $_REQUEST, die möglicherweise nicht korrekt mit anderen Anforderungsvariablen ($ _GET, $_POST und $_COOKIE) in Ihrer Umgebung. Auch die PHP-Version kann eine Rolle spielen.
Eine Überprüfung der Funktion getCode() in der Datei base_facebook.php zeigt den folgenden Code:
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; }
Um dieses Problem zu beheben, können wir dies ändern Funktion wie folgt:
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; }
Diese Änderung konsolidiert alle Anforderungsvariablen in der Variablen $server_info, wodurch sichergestellt wird, dass die Funktion getCode() auf den Codeparameter zugreifen kann eine dieser Quellen, unabhängig von der Konfiguration Ihrer PHP-Umgebung.
Das obige ist der detaillierte Inhalt vonWarum gibt das PHP SDK „getUser()' von Facebook immer 0 zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!