Facebook的Django social_auth不再有效

时间:2017-05-17 19:20:11

标签: django facebook heroku django-socialauth

我使用facebook登录设置了social_auth用于Django应用程序。但是,最近它停止了工作(尽管我记得我没有对代码进行任何更改)。在它工作正常之前,但现在当我尝试登录时,我从Django调试屏幕中得到以下错误: enter image description here

enter image description here

通过一些进一步的调试,我意识到"响应"运行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或下载并安装自己的依赖项时,我将无法实现这样的解决方案。除非我制作自定义后端管道,否则就是黑客攻击。

也许有一些我不知道的东西。

1 个答案:

答案 0 :(得分:0)

看起来好像已经点击了this issue。它似乎已在python-social-auth中修复。

您已为自己的问题django-social-auth添加了标记,但已弃用python-social-authcurrent recommendation似乎是要安装social-auth-coresocial-app-django应用。