2011-07-09 34 views
2

我在这里找到了方向如下:Facebook的OAuth的问题

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." 
    } 
} 

我不知道是怎么回事,但我对两者是叔以下几个方向是他的脸书网站,以及他们提供的代码,这不适用于Python或浏览器。有趣的是,如果我使用具有相同凭证的客户端流程,我可以通过散列标签获取access_token,但这对我没有用处。

此外,我正在测试本地@http://127.0.0.1:8000,并通过我的Facebook应用程序设置正确配置。

由于

UPDATE:

我固定它,事实证明这两种redirect_urs必须是相同的 我使用

^/实/ AUTH/

^facebook/auth/token/

,只要我使用这两种

的Facebook /认证/ + Facebook的/ auth /中

它的工作

+0

绝对将您的修补程序拆分为答案,并将其标记为已接受。我保证,你遇到的问题已经让其他人感到困扰。 – tephyr

回答

0

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

这对你来说可能没用,现在你已经可以使用它了,但是下次你需要在Python中使用OAuth提供者时可能需要考虑一些事情吗?