Google OAuth2命令行示例



Google在这里有一个OAuth2客户端的例子

我是OAuth2的新手,在将OAuth2与我的应用程序集成之前,我想让这个例子发挥作用。我所做的是:

  1. 注册测试应用程序
  2. 获取客户端ID和客户端机密
  3. 将这些值配置到client_secrets.json中
  4. 运行测试应用程序:python moderator.py

该应用程序打开一个浏览器,我可以(作为用户)在其中授权该应用程序访问我的帐户。但谷歌是这样抱怨的(400坏请求):

Error: redirect_uri_mismatch
The redirect URI in the request: http://localhost:8080/ did not match a registered redirect URI
Learn more
Request Details
from_login=1
scope=https://www.googleapis.com/auth/moderator
response_type=code
access_type=offline
redirect_uri=http://localhost:8080/
approval_prompt=auto
as=-xxxxxxxxxxxxx
pli=1
client_id=xxxxxxxxxxx.apps.googleusercontent.com
authuser=0
hl=en

我猜localhost:8080来自一个由moderator.py启动的内部web服务器。我的问题是:有人能用这个例子吗?我还需要哪些其他组件(apache配置、DNS…)

我对OAuth2感到非常困惑,如有任何帮助,我们将不胜感激。

首先,如果我的答案不是很准确,很抱歉,因为我对OAuth(甚至python)也很陌生。。。如果来得太晚,我也很抱歉,我通常不会访问这里。

你试过用这个吗(对我有用):REDIRECT_URI='urn:ietf:wg:oauth:2.0:oob'

检查此项:https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi

这里我有一段代码,其中包含一个完整的OAuth流。

在OAuth 2.0中,redirect_uri参数通常在提供程序中注册。提供程序还应该强制使用https only重定向_uri。

你需要在这里向谷歌注册redirect_uri:https://code.google.com/apis/console/?pli=1#access

也许可以尝试向谷歌注册您的外部IP(可能需要在路由器上安装一些端口)?如果失败,也许您可以使用Python的SimpleServer,注册您的IP并让该服务器处理重定向。

您的redirect_uri设置为'http://localhost:8080/'因为您将默认(我不知道如何描述它)flags参数传递给run_flow(流、存储、flags)

如果您查看define for run_flow()函数,您会发现:

It presumes it is run from a command-line application and supports the
following flags:
    ``--auth_host_name`` (string, default: ``localhost``)
       Host name to use when running a local web server to handle
       redirects during OAuth authorization.
    ``--auth_host_port`` (integer, default: ``[8080, 8090]``)
       Port to use when running a local web server to handle redirects
       during OAuth authorization. Repeat this option to specify a list
       of values.
    ``--[no]auth_local_webserver`` (boolean, default: ``True``)
       Run a local web server to handle redirects during OAuth
       authorization.

相关内容

  • 没有找到相关文章

最新更新