У меня странные проблемы при создании приложения iframe для Facebook. Кажется, что приложение застревает в бесконечном цикле на странице «Перейти к приложению».
После того, как пользователь авторизует приложение на странице «Перейти к приложению» и возвращается в приложение, вызов / me api вызывает исключение «Ошибка проверки доступа». Я проверил, есть ли в подписанном запросе действительный токен доступа (протестировано с помощью инструмента отладки токена доступа на Facebook). Я попытался установить это с помощью метода setAccessToken () безуспешно.
Метод getUser () успешно возвращает идентификатор пользователя, но он все еще зависает при вызове / me api.
Это происходит не во всех браузерах, я просто вижу это в Chrome, иногда не совсем ясно. Я исправил это в IE, используя заголовок P3P. В Firefox работает нормально.
Я в значительной степени застрял, и я не в силах вытащить, поэтому любые идеи приветствуются. Большое спасибо.
Полное сообщение об ошибке: «Ошибка проверки токена доступа. Вы не можете получить доступ к приложению, пока не войдете на сайт www.facebook.com и не выполните приведенные инструкции».
Некоторый код ниже.
$this->_facebook = new Facebook(
array(
'appId' => $this->_config['appId'],
'secret' => $this->_config['secret'],
'cookie' => true,
'fileUpload' => true
)
);
$this->_signedRequest = $this->_facebook->getSignedRequest();
// Doing something with signed request, not FB related
$this->_userId = $this->_facebook->getUser();
if($this->_userId) {
try{
// At this line the "Error validating access token" error shows up
$this->_user = $this->_facebook->api('/me');
// Some more irrelevant code here
} catch (Exception $e){
$this->_facebook->destroySession();
$this->_facebookLogin(false);
}
} else {
$this->_facebook->destroySession();
$this->_facebookLogin(false);
}
// The _facebookLogin method
public function _facebookLogin($perms = 'email,user_birthday,publish_stream,video_upload'){
$data = array(
'fbconnect' => 0,
'redirect_uri' => 'aredirecturl.com'
);
if(!empty($perms)) {
$data['scope'] = $perms;
}
echo '<script type="text/javascript">window.top.location.href = "'.$this->_facebook->getLoginUrl($data).'";</script>';
exit;
}