我正在尝试使用本教程在python,django中为fb api长期使用访问令牌:http://developers.facebook.com/docs/howtos/login/server-side-login/
这在我的本地工作在开发服务器上,但不在生产中!
我在第一步获得了代码,但是在下一步有问题:步骤6.交换访问令牌的代码
以下是获取访问令牌的代码:
params = {
'client_id': app_id,
'client_secret': app_secret,
'code': code,
'redirect_uri': "http://" + Site.objects.get_current().domain + reverse("login_fb")
}
url = "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(params)
headers = {'User-Agent': 'Mozilla/5.0'}
request = urllib2.Request(url, headers=headers, data=urllib.urlencode(params))
response = urllib2.urlopen(request)
当我调出请求时出现错误: HTTP错误400:错误请求
它正在开发服务器上工作。
当我使用return redirect(url)
而不是urllib2.urlopen(url)
时,我被重定向到有效的访问令牌。
为什么它不适用于 urlopen ?
更新 这是fb api的反应:
Invalid redirect_uri: The specified URL is not allowed by the configuration of the application
答案 0 :(得分:0)
您可能需要在Facebook Apps面板中添加“localhost”作为“App Domains”
localhost
(另请注意其中的帮助文字,内容为:“在域和子域上启用身份验证”)