请求fb令牌仅在生产中返回django中的错误400:“无效的redirect_uri:不允许指定的URL ...”

时间:2013-01-24 12:59:19

标签: python django facebook-graph-api facebook-access-token

我正在尝试使用本教程在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

1 个答案:

答案 0 :(得分:0)

您可能需要在Facebook Apps面板中添加“localhost”作为“App Domains”

  1. https://developers.facebook.com/apps
  2. “编辑”您尝试调试的应用
  3. 在“应用领域”行中,输入localhost(另请注意其中的帮助文字,内容为:“在域和子域上启用身份验证”)