为什么在使用facebook进行身份验证时,我将example.com作为redirect_uri?

时间:2011-12-04 13:42:45

标签: django authentication facebook

我为我的网站设置了facebook身份验证。

当我点击“使用facebook登录”时,它会将我引发到以下网址:

https://graph.facebook.com/oauth/authorize?redirect_uri=http%3A%2F%2Fexample.com%2Fla_facebook%2Fcallback&display=page&client_id=126197457491070

redirect_url是“example.com”,显然不正确或不允许。

然而,在我的代码或我使用的身份验证包中没有任何地方是example.com设置,所以这必须由facebook生成?我在哪里可以更改它?为什么它与我在facebook应用程序设置中设置的域名和网站不一样?

由于redirect_url:

,我收到以下错误
{ 
   "error": { 
      "message": "Invalid redirect_uri: Given URL is not permitted by 
      the application configuration.", 
      "type": "OAuthException" 
  } 
} 

我正在使用Django和Heroku以及django-la-facebook(https:// github.com/cartwheelweb/django-la-facebook)

2 个答案:

答案 0 :(得分:2)

django.contrib.sites框架的默认网站是example.com。您可以从默认管理员或通过django shell更改它。

有关更多信息,请参阅the documentation了解网站框架。

答案 1 :(得分:1)

如果您查看用于通过Facebook进行身份验证的django应用的the code,您会看到以下内容:

def callback_url(self):
        """
current site id
grab base site url
grab callback url
return base and callback url
"""

        current_site = Site.objects.get(pk=settings.SITE_ID)
        # @@@ http fix
        base_url = "http://%s" % current_site.domain
        callback_url = reverse("la_facebook_callback")
        return "%s%s" % (base_url, callback_url)
正如burhan指出的那样,默认的contrib.sites域被用作重定向uri的基础,所以你应该将它修复为你的实际域。