我按照此处的说明进行操作:
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 /
它有效
答案 0 :(得分:0)
我看到你找到了问题的解决方案。我还想提到一个我维护的库,当使用Python使用OAuth提供程序时可能会让你的生活更轻松,它被称为rauth。特别是an example使用Flask连接到Facebook的Graph API可能很有用。
现在您已经开始使用它可能对您没有用,但是下次需要在Python中使用OAuth提供程序时可能需要考虑一些事项?