【发布时间】: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