Facebook OAuth问题

时间:2011-07-09 18:26:56

标签: python facebook facebook-graph-api oauth-2.0

我按照此处的说明进行操作:

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

尝试连接到facebook图形API服务器端。我正在使用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并通过我的脸书应用设置正确配置。

由于

更新:

我修复了它,但事实证明redirect_urs必须是相同的 我正在使用

^ /实/ AUTH /

^实/ AUTH /令牌/

我一使用

facebook / auth / + facebook / auth /

它有效

1 个答案:

答案 0 :(得分:0)

我看到你找到了问题的解决方案。我还想提到一个我维护的库,当使用Python使用OAuth提供程序时可能会让你的生活更轻松,它被称为rauth。特别是an example使用Flask连接到Facebook的Graph API可能很有用。

现在您已经开始使用它可能对您没有用,但是下次需要在Python中使用OAuth提供程序时可能需要考虑一些事项?