【问题标题】:Error: redirect_uri_mismatch with a google app using the Big Query API?错误:redirect_uri_mismatch 与使用 Big Query API 的谷歌应用程序?
【发布时间】:2012-09-29 04:35:21
【问题描述】:

您好,我一直在尝试制作一个使用 Biq Query API 的应用。

当我在本地加载应用程序时,OAuth2 的所有身份验证和客户端密码都可以正常工作,但是在部署代码后我收到以下错误:

错误:redirect_uri_mismatch 请求详情

scope=https://www.googleapis.com/auth/bigquery
response_type=code
redirect_uri=https://terradata-test.appspot.com/oauth2callback
access_type=offline
state=https://terradata-test.appspot.com/
display=page
client_id=660103924069.apps.googleusercontent.com

但是查看我的 API 控制台,我发现重定向 uri https://terradata-test.appspot.com/oauth2callback 在我的列表中或重定向 uri 的:

重定向 URI:

1.https://terradata-test.appspot.com/oauth2callback

2.http://terradata-test.appspot.com/oauth2callback

3.http://1.terradata-test.appspot.com/oauth2callback

4.https://code.google.com/oauthplayground

我不确定我缺少什么来解决这个问题?为什么 API 控制台中列出的 uri 会出现重定向错误?

应用构建 OAuth2 装饰器以传递给 Biq Query API,如下所示:

CLIENT_SECRETS = os.path.join(os.path.dirname(__file__),
   'client_secrets.json')

decorator = oauth2decorator_from_clientsecrets(
    CLIENT_SECRETS,
    'https://www.googleapis.com/auth/bigquery')

http = httplib2.Http(memcache)   

bq = bqclient.BigQueryClient(http, decorator)

我还应该添加更多代码来澄清这种情况吗?任何投入将不胜感激。非常感谢!

【问题讨论】:

  • 您能否确认您用于向 API 发出请求的客户端 ID/项目是您设置重定向 URI 的那个?

标签: google-app-engine google-bigquery


【解决方案1】:

在标准 Web 服务器 OAuth 2.0 流程(授权码)中,有 3 个地方使用了 redirect_uri。它在所有三个地方都必须相同:

  1. 在您将用户重定向到的 URL 中,以便他们批准访问和 获取授权码。
  2. 在 API 控制台中
  3. 在 交换授权代码时的服务器到服务器 HTTPS 发布 用于访问令牌(+ 可能是刷新令牌)

【讨论】:

【解决方案2】:

您必须创建一个 API 凭据,然后执行后续步骤 https://console.cloud.google.com/apis/credentials

客户端 Oauth ID 网页类型 JavaScript 授权 -> https://yourapp.appspot.com

URI 已授权 -> https://yourapp.appspot.com/oauth2callback

这是部署前您必须在本地应用中使用的凭据

【讨论】:

    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 2016-10-09
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多