Google有一个OAuth2客户端here
的示例我对OAuth2完全不熟悉,我想在将OAuth2与我的应用程序集成之前让这个示例正常工作。我所做的是以下内容:
python moderator.py
应用程序打开一个浏览器,我可以(作为用户)授权应用程序访问我的帐户。但Google正在这样抱怨(400 Bad Request):
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非常困惑,非常感谢任何帮助。
答案 0 :(得分:2)
首先,抱歉,如果我的回答不是很精确,因为我对OAuth(甚至是python)也很新......而且如果来得太晚我也很抱歉,我不会# 39; t通常在这里访问。
您是否尝试过使用此功能(为我工作): REDIRECT_URI =' urn:ietf:wg:oauth:2.0:oob'
请检查:https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi
Here我有一段代码,其中包含完整的OAuth流程。
答案 1 :(得分:0)
在OAuth 2.0中,redirect_uri参数通常在提供程序中注册。提供者还应该强制执行https-only redirect_uri。
您需要在此处向Google注册redirect_uri:https://code.google.com/apis/console/?pli=1#access
答案 2 :(得分:0)
也许尝试向Google注册您的外部IP(可能需要在您的路由器上使用某些端口)?如果失败,也许你可以使用Python的SimpleServer,注册你的IP并让这台服务器来处理重定向。
答案 3 :(得分:0)
您的redirect_uri设置为' http://localhost:8080/'因为你传递一个默认值(我不知道如何描述它)标志参数run_flow(流量,存储,标志)
如果你看一下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.