Python - Google OAuth2 - неверное количество сегментов в токене

Я пытаюсь подключить свой проект Android Flutter к серверу Flask API, и клиентское приложение работает так, как задумано. Проблема в том, что даже жесткое кодирование токена доступа OAuth2 на сервере выдает следующее сообщение об ошибке. Я запутался, почему это происходит. Официальная документация Google по обработке OAuth2 бэкэнда Python находится здесь.

Сообщение об ошибке: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

1 ответ

То, что вы передаете, это access_token, а не id_token. когда вы инициируете вход в Google, он отправляет "код", затем вы передаете его конечной точке токена, и он дает вам три вещи. access_token, id_token и refresh_token(в зависимости от условия). что эта функция хочет, это id_token.

Другие вопросы по тегам