Oauth提供商请求*另一个*提供商的许可

时间:2014-04-28 21:10:49

标签: python django oauth oauth-provider

我使用django-allauth实现了一个应用程序,该应用程序使用普通的django用户登录或google或github社交登录来登录用户。这似乎工作到现在为止 - 用户可以使用他们的谷歌或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错误页面(尝试通过您的社交网络帐户登录时出错。实际存在的是我的网址获取参数中的以下错误:

error=redirect_uri_mismatch
&
error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.

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

另外,一个更一般的问题:我无法找到类似的流程(使用使用其他 oauth提供程序登录的oauth提供程序)。实际上可以这样做吗?

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

0 个答案:

没有答案