Не могу OAuth с Facebook;каковы мои следующие шаги отладки? - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть шаблон Django, который запускает процесс OAuth Facebook , выполнив:

window.location='https://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=http%3A//localhost%3A8000/fbpanel/explore-python'

Затем, в моем представлении Django, я получаю следующий код:

import cgi
import urllib

# [...]

code = request.GET['code']
args = {
    'client_id': MY_CLIENT_ID,
    'redirect_uri': 'http://localhost:8000/fbpanel/explore_python'
    'client_secret': MY_CLIENT_SECRET,
    'code': code,
}
url = 'https://graph.facebook.com/oauth/access_token?' + \ 
        urllib.urlencode(args)

raw_response = urllib.urlopen(url).read()
response = cgi.parse_qs(raw_response)    

if response:
    error = ''
    if response['access_token']:
        access_token = response['access_token'][0]
    if response['expires']:
        expires = response['expires'][0]
else:
    access_token = 'No access token returned'
    expires = 'No expiration given'
    error = raw_response

Неизменно, response равен None, а raw_response содержит Error: {"error":{"message":"Error validating verification code.","type":"OAuthException"}}

Те же учетные данные подтверждают штраф с помощью JavaScript SDK .В этом случае я также привязывал свой сервер к localhost и установил localhost:8000 в моем официальном домене приложения.До того, как я это сделал, JavaScript не работал.После того, как это сделал.Так что я не думаю, что localhost - это проблема.

Я вручную прошел по коду, печатая code, возвращенный FB, затем вручную выполняя приведенный выше код построчно в pythonпереводчик, и я не вижу ничего, что я делаю неправильно.Каковы мои следующие шаги отладки?Документация FB предлагает мало рекомендаций, если вы получаете OAuthException.

1 Ответ

3 голосов
/ 04 ноября 2011

Значение, используемое для redirect_uri, должно быть точно таким же, когда вы запрашиваете токен, как это было, когда вы запрашивали код. Поскольку при запросе токена не происходит никакого фактического перенаправления, можно легко пропустить небольшие различия. Сообщение об ошибке не является особенно описательным в этом случае; что на самом деле означает «параметры, которые вы отправляете, не соответствуют значению кода, которое вы отправляете».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...