Python - Google OAuth2 - token 中的段数错误

标签 python flask google-oauth google-authentication google-api-python-client

我正在尝试将我的 Android Flutter 项目连接到我的 Flask API 服务器,并且客户端应用程序按预期工作。问题是,即使将 OAuth2 访问 token 硬编码到服务器中也会给出以下错误消息。我很困惑为什么它甚至会发生。关于 Python 后端 OAuth2 处理的官方 Google 文档是 here .

错误信息:Wrong number of segments in token: b'ya29.GluNBQsv_8FW2-jjI0w.....
代码:

import flask
from flask import jsonify, request, redirect, url_for
from google.oauth2 import id_token
from google.auth.transport import requests

#### SKIPPED INIT AND OTHER CODE ####

@app.route('/', methods=['POST'])
def index():
    token = "ya29.GluNBQsv_8FW2....." # 129 chars in total

    try:
        idinfo = id_token.verify_oauth2_token(token, requests.Request(), None)
        print(idinfo['email'])
    except Exception as ex:
        print(ex)
        data = {
            'status': 403,
            'message': 'Authorization required',
        }
        response = jsonify(data)
        response.status_code = 403
        return response

最佳答案

您传递的是 access_token 而不是 id_token。
当您启动 Google 登录时,它会向您发送一个“代码”,然后您将其传递给 token 端点,并为您提供三件事。 access_token、id_token 和 refresh_token(基于条件)。
该函数想要的是 id_token。

关于Python - Google OAuth2 - token 中的段数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49565028/

相关文章:

iphone - Google 帐户 OAuth2 支持框架?

python - 使用 PIL 模块的 UnicodeDecodeError

python - Flask - 如何通过路由器使应用程序在外部可见?

android - YouTube API v3 - 请求上传权限 - Android

javascript - 创建自定义休息客户端

python - 如何让 SQLAlchemy 与现有数据库一起使用 mysql

c# - 权限不足 [403] 发送电子邮件

Python - 嵌套循环与 'in' 运算符导致几乎双倍的运行时间

python - 为什么 pytesseract 不能处理 OSD 模式?

python - 带有生成器的大型语料库上的 TfidfVectorizer