我在一个项目中使用 python-social-auth 通过 Github 对用户进行身份验证。
我需要根据用户使用的链接重定向用户。为此,我在 url 上使用了 next 属性,并且我没有在 github 应用程序上声明任何重定向 url,也没有在 django 设置中声明任何重定向 url。
这是我用于链接的 href 属性:{% url 'social:begin' 'github' %}?next={% url 'apply' j.slug %}
当我第一次点击它时,我被重定向到我的主页,网址字段中出现此错误:http://127.0.0.1:8000/?error=redirect_uri_mismatch&error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.&error_uri=https%3A%2F%2Fdeveloper.github.com%2Fv3%2Foauth%2F%23redirect-uri-mismatch&state=Ui1EOKTHDhOkNJESI5RTjOCDEIdfFunt
但第一次之后链接就工作了。
我不知道问题出在哪里,希望有人能帮助我。谢谢
这个库使用OAuth http://en.wikipedia.org/wiki/OAuth用于 GitHub 身份验证。
You must提供回调 URL,因为 OAuth 过程会导致用户的浏览器实际上离开你的网站作为身份验证过程的一部分。您发送到 GitHub 的回调 URL 用于重定向用户back to你的网站。
看起来像 Python 社交认证为您处理其中一些 http://psa.matiasaguirre.net/docs/backends/github.html,不过(强调我的):
GitHub
Github 的工作方式与 Facebook (OAuth) 类似。
注册新应用程序:GitHub 开发者 https://github.com/settings/applications/new, 将回调 URL 设置为http://example.com/complete/github/
替换example.com
与您的域名.
-
Fill App Id
and App Secret
设置中的值:
SOCIAL_AUTH_GITHUB_KEY = ''
SOCIAL_AUTH_GITHUB_SECRET = ''
-
还可以通过以下方式定义额外的权限:
SOCIAL_AUTH_GITHUB_SCOPE = [...]
棘手的一点是让它在您的开发机器上运行。
将您的域名设置为 127.0.0.1主机文件 http://en.wikipedia.org/wiki/Hosts_%28file%29应该可以,像这样
127.0.0.1 example.com
但一旦投入生产,请务必对此进行评论!
您可能还想浏览GitHub 的 OAuth 文档 https://developer.github.com/v3/oauth/。使用库固然很棒,但如果您了解底层技术,问题就会减少。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)