【问题标题】:Oauth2 Client ID Matching with Wrong ProjectOauth2 客户端 ID 与错误项目匹配
【发布时间】:2018-08-02 19:37:16
【问题描述】:

我有两个单独的 Google App Engine 项目(我们称它们为项目 A 和 B),我正在使用 Oauth2 来验证用户。对于每个项目,我都生成了自己的 Oauth 2.0 客户端 ID。

所以对于项目 B,尝试验证我的 Oauth2 令牌会产生值错误。据我所知,出于某种原因,它期望来自项目 A 的 ClientID。使用项目 A 的 Client ID 实际上使一切都按预期工作,这看起来很奇怪。

我正在为这个项目使用 Python3.5,并尝试使用 Flask 部署网页,如果这有帮助的话。

错误代码:(已编辑密钥)

Token has wrong audience <Client ID A>, expected <Client ID B>

验证令牌代码:

from google.oauth2 import id_token
from google.auth.transport import requests as goog_requests
from flask import Flask, render_template, request
...
# Verify and get info for the user's ID token.
# This is where the error gets thrown
idinfo = id_token.verify_oauth2_token(
    request.headers.get('X-id-token'),
    goog_requests.Request(),
    CLIENT_ID
)

附加信息 - 正如我对那个错误代码所期望的那样,用于登录的 UI 表明我也在尝试登录到项目 A。我也想知道这是否与我的 google sdk cli 配置有关。我尝试将我的默认项目重置为项目 B,但这并没有改变任何东西。

非常感谢任何帮助!

【问题讨论】:

  • 我意识到我写错了错误代码。现在已经修好了。我猜 'X-id-token' 标头正在为项目 A 而不是项目 B 生成一个令牌。通常对 Web 开发来说还是新手,所以我想我会尝试弄清楚这是怎么回事。

标签: python-3.x google-app-engine google-cloud-platform google-oauth


【解决方案1】:

我很笨。我没有更改我的 HTML 中的登录对象 (?) 以匹配新的客户端 ID。我不得不改变

<meta name="google-signin-client-id" content="CLIENT_ID">

到新的客户 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2020-03-27
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多