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.