У меня возникли некоторые странные проблемы с созданием iframe-приложения для Facebook. Приложение, похоже, застряло в бесконечном цикле на странице Go To App.Facebook PHP SDK 3.1.1 «Ошибка проверки доступа к токену» после перехода на страницу приложения
После того, как пользователь авторизует приложение на странице Go To App и возвращается в приложение, вызов/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;
}
Вы можете поместить свой полный код (например, в этом коде 'public function _facebookLogin' is wrong –
Я столкнулся с той же проблемой, хром. @Cazacu Vlad, если вы нашли решение, пожалуйста, отправьте сюда спасибо –