Facebook对Python/Djang的“缺少重定向uri参数”响应

2024-05-20 15:45:47 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个非常愚蠢的问题,但我已经盯着这个问题看了好几个小时,却找不到我做错了什么。

我试图使用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":"Missing redirect_uri parameter.","type":"OAuthException","code":191}}

有什么问题吗?我已经验证了正在传递的重定向uri是否在应用程序域中,但这是否是本地托管的问题,并且该域只是由我的主机文件重定向到本地主机?

谢谢你的帮助!

编辑:

我是通过请求库来完成这项工作的:

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)

但是,我仍然希望依赖于一个库,而这个库本机支持起来不会有太多困难。也许这要求太多了。。。


Tags: comclienttokenidappsecretfacebookaccess
1条回答
网友
1楼 · 发布于 2024-05-20 15:45:47

在第一个例子中(使用HTTPSConnection的例子), 您正在请求正文中传递params

conn.request("GET", "/oauth/access_token", params)

这是不正确的(GET请求应该没有body)。 相反,参数应该作为查询字符串传递 URL的一部分:

conn.request("GET", "/oauth/access_token?" + params) 

相关问题 更多 >