OAuth ломается, но только когда пользователи приходят с HTTP, HTTPS работает нормально - PullRequest
3 голосов
/ 30 октября 2011

Я пытаюсь получить токен авторизации для пользователя, использующего OAuth.

Все отлично работает, и я замечательно получаю токен, когда пользователи пытаются получить доступ к приложению с использованием HTTPS, то есть https://apps.facebook.com/APPNAME. Однако, если пользователь идет по HTTP (а это большинство пользователей), я получаю 400 ошибок из Facebook при попытке получить:

https://graph.facebook.com/oauth/access_token?code=XXXXXXXX-XXXXXX-XXXXXXXXX&client_secret=YYYYYYYYYYYYYYYYYYYYY&redirect_uri=https://fb.myapp.com/fb_connect/&client_id=ZZZZZZZZ

{
   "error": {
      "message": "Error validating verification code.",
      "type": "OAuthException"
   }
}

Почему это происходит?

Ответы [ 3 ]

2 голосов
/ 13 июня 2012

У меня была такая же проблема, но я обнаружил, что это потому, что пользователь еще не подтвердил адрес электронной почты.Таким образом, вы не получите токен для нового пользователя, который не подтвердил свой адрес электронной почты.На всякий случай, я подумал, что это полезно для этой темы.

2 голосов
/ 02 ноября 2011

Подобные проблемы возникли с тех пор, как Facebook начал требовать сертификаты SSL для приложений.

  1. OAuth 2.0 корректно работает с PHP SDK 3.1.1. Если вы используете более ранние версии, перейдите на GIT HUB и обновитесь.

  2. Однако даже с 3.1.1 подписанные запросы возвращают NULL с http: //, если пользователи Facebook не включили безопасный просмотр.

Решение состоит в том, чтобы: 1. использовать javascript для добавления перенаправления вверху вашего скрипта или 2. добавить ссылку (href = https://your app url *) где-нибудь.

  1. В FB есть большой недостаток, так как все ссылки FB в левом меню страницы являются http: //, когда пользователь не включил безопасный просмотр.
1 голос
/ 02 ноября 2011

Для меня проблемой с «Ошибка проверки кода подтверждения» были redirect_uri.Между запросом на аутентификацию пользователя (возврат code) и авторизацией / авторизацией приложения должно быть одно и то же.

...