【发布时间】:2018-09-08 22:34:11
【问题描述】:
我正在尝试将我的 Android Flutter 项目连接到我的 Flask API 服务器,并且客户端应用程序按预期工作。问题是,即使将 OAuth2 访问令牌硬编码到服务器中,也会出现以下错误消息。我很困惑为什么它会发生。关于 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 直接向googleapis.com/oauth2/v3/userinfo 发送请求来修复代码。但是,这绝对是一种黑客攻击
标签: python flask google-oauth google-authentication google-api-python-client