3

我已经使用 django-allauth 实现了一个应用程序,该应用程序使用普通的 django 用户登录名或通过 google 或 github 社交登录名登录用户。到目前为止,这似乎工作正常 - 用户可以使用他们的 google 或 github 帐户或通过普通的 django 帐户登录到此应用程序。

现在,用户可以在这个应用程序中添加一些资源,我想使用 REST api从不同的应用程序访问这些资源。所以第一个应用程序需要是一个 oauth2 提供者——我尝试在 django-oauth-toolkit(它使用 python-oauthlib)的帮助下实现它。

在任何情况下,我都尝试按照创建提供程序的教程进行操作:此处为https://django-oauth-toolkit.readthedocs.org/en/0.7.0/tutorial/tutorial_01.html。所有步骤都完成了,所以我访问了http://django-oauth-toolkit.herokuapp.com/consumer/以测试我的提供程序(如教程所建议的那样),

所以当我请求访问时,我得到了我的应用程序的登录屏幕。当我尝试使用普通 django 用户登录时,一切正常,并且我能够授予对我的提供商的访问权限。但是,使用社交帐户登录并不成功:我点击“Github”以使用我的 github 帐户登录——我得到了正常的 github 登录屏幕,但是在我使用 github 登录后,我得到了 django-allauth 错误页面(尝试通过您的社交网络帐户登录时发生错误)。实际上,我的 url 获取参数中出现以下错误:

错误=redirect_uri_mismatch
&
error_description=+redirect_uri+必须+匹配++注册+回调+URL+for+this+应用。

任何想法可能是什么问题?

另外,一个更普遍的问题:我找不到类似的流程(使用使用其他oauth 提供程序登录的 oauth 提供程序)。真的可以这样做吗?

更新:事实证明,问题在于我使用http://127.0.0.1:8000/的是本地 oauth2 提供程序,但我已写入http://localhost:8000/测试消费者的授权 URL(http://django-oauth-toolkit.herokuapp.com/consumer/) . 这就是我收到redirect_url_mismatch错误的原因 - 在我将其更改为http://127.0.0.1:8000/一切正常之后 - 这回答了我的第二个问题:您可以链接 oauth 提供者!

4

0 回答 0