使用allauth
和django-rest-auth
创建Facebook登录API。我已经遵循了这两个包文档并使用了 rest-auth 文档中的示例。我已经按照所有步骤操作,我可以从DRF可浏览的API视图中成功使用此API,并且它已成功执行注册。当我从其他地方(如邮递员)尝试此 API 时,它要求提供 CSRF token.
我尝试使用csrf_exempt
装饰器,但这似乎对这个网址无效。
这是我的网址配置:
url(r'^rest-auth/facebook/$', csrf_exempt(FacebookLogin.as_view()), name='fb_login'),
其余内容与django-rest-auth
文档中提到的相同。
无法弄清楚我错过了什么,或者我应该在哪里寻找修复。任何帮助诊断问题将不胜感激。
TL;DR 在FacebookLogin
视图中设置authentication_classes = ()
。
登录和注册视图应该没有身份验证检查。我假设您的 DRF DEFAULT_AUTHENTICATION_CLASSES
按顺序设置为令牌身份验证和会话身份验证。因此,当您的请求正在处理时,服务器找不到身份验证令牌,因此作为回退,它会尝试执行会话身份验证,这需要 CSRF,这反过来会导致 CSRF 失败。