Я следую указаниям, найденным здесь:
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 /
это сработало