我正在使用django-rest-auth使用django-allauth进行社交登录。我根据rest-auth文档设置了登录facebook。这是一个观点。身份验证有效,但用户的电子邮件为空。所以我添加 callback_url 和 client_class (就像文档说的那样)。
from rest_auth.registration.views import SocialLoginView
from allauth.socialaccount.providers.oauth2.client import OAuth2Client
class FacebookLogin(SocialLoginView):
adapter_class = FacebookOAuth2Adapter
callback_url = 'http://localhost:8000/rest-auth/facebook/'
client_class = OAuth2Client
但它不起作用。它返回此错误:
验证验证码时出错。请确保您的redirect_uri与您在OAuth对话框请求中使用的redirect_uri相同
首先我认为问题出在图书馆。所以我打印出请求的所有参数,然后检查所有这些。一切都很好,所以我尝试将带有这些参数的URL放到Facebook Graph API。但错误是一样的。这是我手动尝试的所有URL,不使用allauth库:
https://graph.facebook.com/v2.10/oauth/access_token?redirect_uri=http://localhost:8000/rest-auth/facebook/&client_id=203192345223034931&client_secret=a475bbbscds65437c89bf04d359d98a&code=203192345223034931|l3ujbbbscdhrf0404d3B2de57Dw
cliend_id 和 client_secret 我从Dashboard从Facebook开发者控制台获取。 代码是来自here
的App令牌在facebook开发者界面中,我设置了:
有效的OAuth重定向URI: http://localhost:8000/rest-auth/facebook/
App域: localhost
因为我在我的浏览器中手动尝试了它,所以我希望它不会成为图书馆的问题但是我的设置或我对某些事情的误解。
我尝试使用普通域名,但它没有任何变化。