Проблемы с OAuth на Facebook - PullRequest
2 голосов
/ 09 июля 2011

Я следую указаниям, найденным здесь:

http://developers.facebook.com/docs/authentication/

Попытка подключения к серверу API графа Facebook. Я использую Django и в основном копирую тот же код, найденный здесь:

https://github.com/facebook/python-sdk/blob/master/examples/oauth/facebookoauth.py

Вот мой код

def get_code(request):
    c = RequestContext(request)
    verification_code = request.GET.get('code',None)
    args = dict(client_id=FACEBOOK_APP_ID, redirect_uri=REDIRECT)
    if verification_code:
        args["client_secret"] = FACEBOOK_SECRET_KEY
        args["code"] = verification_code
        response = cgi.parse_qs(urllib.urlopen(
                        "https://graph.facebook.com/oauth/access_token?" +
                        urllib.urlencode(args)).read())
        print "------------------------"
        print response
        #access_token = response["access_token"][-1]
        #print access_token
        print "------------------------"
    else:
        http.HttpResponseRedirect("https://graph.facebook.com/oauth/authorize?" + urllib.urlencode(args))

В любом случае, я могу успешно получить код авторизации, но когда я пытаюсь использовать его для получения моего access_token, я вижу следующий ответ:

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

Понятия не имею, что происходит, но я следую указаниям как на сайте facebook, так и в коде, который они предоставляют, и это не работает ни в Python, ни из браузера. Интересно, что если я использую поток на стороне клиента с теми же учетными данными, я смогу получить access_token с помощью хеш-тега, но это мне не полезно.

Кроме того, я тестирую локально @ http://127.0.0.1:8000 и правильно настроил его в настройках приложения Facebook.

Спасибо

UPDATE:

Я исправил это, оказалось, что оба redirect_urs должны быть идентичны я использовал

^ / facebook / авториз /

и

^ facebook / авториз / маркер /

как только я использовал оба

facebook / auth / + facebook / auth /

это сработало

1 Ответ

0 голосов
/ 29 марта 2013

Я вижу, вы нашли решение вашей проблемы.Я хотел бы также упомянуть библиотеку, которую я поддерживаю, которая могла бы облегчить вашу жизнь при использовании поставщиков OAuth с Python, она называется rauth .В частности, есть пример подключения к Graph API Facebook с помощью Flask, который может быть полезен.

Это может быть бесполезно для вас сейчас, когда вы уже работаете, но, возможно, что-торассмотреть в следующий раз, когда вам нужно будет использовать OAuth-провайдер в Python?

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