1

我在一个项目中使用 python-social-auth 来通过 Github 对用户进行身份验证。我需要根据用户使用的链接重定向用户。为此,我在 url 上使用了 next 属性,并且在我的 django 设置中也没有在我的 github 应用程序上声明任何重定向 url。

这是我用于链接的 href 属性:{% url 'social:begin' 'github' %}?next={% url 'apply' j.slug %}

第一次点击它时,我被重定向到我的主页,并在 url 字段中出现此错误: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

但是在第一次链接工作之后。

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

4

3 回答 3

4

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

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

不过,看起来 Python Social Auth为您处理了其中的一些问题(强调我的):

GitHub

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

  • 在GitHub Developers注册一个新应用程序,将回调 URL 设置为http://example.com/complete/github/替换example.com为您的域

  • 设置中的填充App IdApp Secret值:

    SOCIAL_AUTH_GITHUB_KEY = ''
    SOCIAL_AUTH_GITHUB_SECRET = ''
    
  • 也可以定义额外的权限:

    SOCIAL_AUTH_GITHUB_SCOPE = [...]
    

棘手的一点是让它在你的开发机器上工作。

在您的主机文件中将您的域设置为 127.0.0.1应该可以工作,就像这样

127.0.0.1   example.com

但是,一旦您投入生产,请务必对此发表评论!

您可能还想浏览GitHub 的 OAuth 文档。使用库很棒,但是如果您了解底层技术,您将遇到更少的问题。

于 2014-04-29T12:06:32.733 回答
0

那行得通

在您的主机文件中将您的域设置为 127.0.0.1 应该可以工作,就像这样

127.0.0.1 example.com

于 2019-07-12T17:49:17.400 回答
0

我确实通过使用解决了登录重定向 URI 不匹配问题http://127.0.0.1:8000/

于 2020-07-26T11:29:46.867 回答