我使用facebook登录设置了social_auth用于Django应用程序。但是,最近它停止了工作(尽管我记得我没有对代码进行任何更改)。在它工作正常之前,但现在当我尝试登录时,我从Django调试屏幕中得到以下错误:
通过一些进一步的调试,我意识到"响应"运行auth_complete函数时,facebook.py文件中的变量非空,但是parsed_response变量不能正确解析响应,因此最终为空。因此,在社交认证后端的facebook.py文件中,我更改了以下代码行:
parsed_response = cgi.parse_qs(response)
access_token = parsed_response['access_token'][0]
if 'expires' in parsed_response:
expires = parsed_response['expires'][0]
以下内容:
import ast
parsed_response = ast.literal_eval(response)
access_token = parsed_response['access_token']
if 'expires' in parsed_response:
expires = parsed_response['expires']
它有效!
但是,这对我来说似乎是个黑客。在网上搜索遇到类似social_auth登录问题的人后,我无法找到任何相关的帖子。同样地,它似乎很奇怪,它一直在停止工作,因为它一直在工作。因此,我觉得虽然这是一个有效的解决方案,但它不是 解决方案,因为当我尝试上传到Heroku或下载并安装自己的依赖项时,我将无法实现这样的解决方案。除非我制作自定义后端管道,否则就是黑客攻击。
也许有一些我不知道的东西。
答案 0 :(得分:0)
看起来好像已经点击了this issue。它似乎已在python-social-auth中修复。
您已为自己的问题django-social-auth添加了标记,但已弃用python-social-auth
。 current recommendation似乎是要安装social-auth-core
和social-app-django
应用。