【发布时间】:2012-06-18 01:37:54
【问题描述】:
这可能是一个非常愚蠢的问题,但我已经盯着这个问题看了好几个小时,找不到我做错了什么。
我正在尝试使用 Python 对 Facebook API 进行身份验证,但在请求用户访问令牌时遇到问题。收到代码后,我向https://graph.facebook.com/oauth/access_token 发出请求,如下所示:
conn = httplib.HTTPSConnection("graph.facebook.com")
params = urllib.urlencode({'redirect_uri':request.build_absolute_uri(reverse('some_app.views.home')),
'client_id':apis.Facebook.app_id,
'client_secret':apis.Facebook.app_secret,
'code':code})
conn.request("GET", "/oauth/access_token", params)
response = conn.getresponse()
response_body = response.read()
作为回应,我收到
{"error":{"message":"缺少 redirect_uri 参数。","type":"OAuthException","code":191}}
有什么想法可能会出错吗?我已经验证了正在传递的redirect_uri 在应用程序域上,但是这可能是一个问题,它是在本地托管并且该域只是被我的主机文件重定向到本地主机吗?
感谢您的帮助!
编辑:
我使用 requests 库完成了这项工作:
params = {'redirect_uri':request.build_absolute_uri(reverse('profiles.views.fb_signup')),
'client_id':apis.Facebook.app_id,
'client_secret':apis.Facebook.app_secret,
'code':code}
r = requests.get("https://graph.facebook.com/oauth/access_token",params=params)
但是,当本机支持该库时,我仍然更愿意依赖库,而没有太多困难。也许这要求太多了……
【问题讨论】:
-
如果您的本地主机设置正确,它应该可以工作。 Facebook 将检查重定向是否有效
-
我就是这么想的。有什么想法还有什么问题吗?
-
嗯,在 facebook 开发人员转到您的应用程序。重定向 uri 必须匹配应用程序 uri
标签: python facebook http ssl httplib