python-social-auth 和 github,我遇到此错误“redirect_uri 必须与此应用程序的已注册回调 URL 匹配”

Uhs*_*sac 3 python authentication django github python-social-auth

我在一个项目中使用 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

但第一次之后链接就工作了。

我不知道问题出在哪里,希望有人能帮助我。谢谢

Chr*_*ris 5

该库使用OAuth进行 GitHub 身份验证。

\n\n

必须提供回调 URL,因为 OAuth 过程会导致用户的浏览器在身份验证过程中实际离开您的站点。您发送到 GitHub 的回调 URL 用于将用户重定向您的网站。

\n\n

看起来 Python Social Auth已经为你处理了一些事情(强调我的):

\n\n
\n

GitHub

\n\n

Github 的工作方式与 Facebook (OAuth) 类似。

\n\n \n
\n\n

棘手的一点是让它在您的开发机器上运行。

\n\n

在主机文件中将域设置为 127.0.0.1应该可以,如下所示

\n\n
127.0.0.1   example.com\n
Run Code Online (Sandbox Code Playgroud)\n\n

但一旦投入生产,请务必对此进行评论!

\n\n

您可能还想浏览GitHub 的 OAuth 文档。使用库固然很棒,但如果您了解底层技术,问题就会减少。

\n