Google OAuth2命令行示例

时间:2012-07-12 15:08:44

标签: python google-api oauth-2.0 google-api-python-client

Google有一个OAuth2客户端here

的示例

我对OAuth2完全不熟悉,我想在将OAuth2与我的应用程序集成之前让这个示例正常工作。我所做的是以下内容:

  1. 注册测试应用程序
  2. 获取客户端ID和客户端密钥
  3. 将这些值配置为client_secrets.json
  4. 运行测试应用:python moderator.py
  5. 应用程序打开一个浏览器,我可以(作为用户)授权应用程序访问我的帐户。但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非常困惑,非常感谢任何帮助。

4 个答案:

答案 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.