如何解决django-allauth Google 登录不适用于 iOS
我正在使用 django 构建 PWA,并且在使用 django-allauth Google 登录时遇到了这个问题。在装有 Chrome 和 Edge 的 Windows PC 上一切正常。但是当尝试在 iOS 设备上使用 Google 登录时,我收到社交网络登录失败,代码为:'unkNown',异常:'PermissionDenied()'
任何想法可能是什么原因或在哪里搜索它?
编辑
我尝试进行更多调试并得到这些错误(仅在 iOS 设备上!):
内部服务器错误:/accounts/google/login/callback/ Traceback (最近一次通话):文件 "/home/kava/.virtualenvs/django3/lib/python3.8/site-packages/allauth/socialaccount/providers/oauth2/views.py",第 141 行,调度中 login.state = SocialLogin.verify_and_unstash_state( 文件“/home/kava/.virtualenvs/django3/lib/python3.8/site-packages/allauth/socialaccount/models.py”,第 325 行,在 verify_and_unstash_state 中 提高 PermissionDenied() django.core.exceptions.PermissionDenied
解决方法
我设法解决了这个问题。
错误是由该函数中 if "socialaccount_state" not in request.session:
后面的行引起的:
@classmethod
def verify_and_unstash_state(cls,request,verifier):
if "socialaccount_state" not in request.session:
raise PermissionDenied()
state,verifier2 = request.session.pop("socialaccount_state")
if verifier != verifier2:
raise PermissionDenied()
return state
所以问题出在会话数据上,更准确地说,缺少“socialaccount_state”。
在谷歌搜索这个与 iOS 相关的问题后,我发现了 this 线程。
我按照那里的建议将 SESSION COOKIE_SAMESITE 和 CSRF_COOKIE_SAMESITE 更改为 None 并且它有效!
顺便说一句,如果“无”位于撇号之间,则它不适用于 iOS 12 设备。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。