Python 如何完成OAuth Google登录?
我的应用程序在客户端运行React和Redux,在服务器端运行Flask 我在我的客户机上收到了来自谷歌的OAUTH令牌,形式如下:Python 如何完成OAuth Google登录?,python,reactjs,flask,oauth,Python,Reactjs,Flask,Oauth,我的应用程序在客户端运行React和Redux,在服务器端运行Flask 我在我的客户机上收到了来自谷歌的OAUTH令牌,形式如下: Object { El: "109087143026456349612", Zi: Object, w3: Object, googleId: "109087143026456349612", tokenObj: Object, tokenId: "eyJhbGciOiJSUzI1NiIsImtpZCI6IjUxNjE…", accessToken:
Object { El: "109087143026456349612", Zi: Object, w3: Object, googleId:
"109087143026456349612", tokenObj: Object, tokenId:
"eyJhbGciOiJSUzI1NiIsImtpZCI6IjUxNjE…", accessToken: "ya29.Ci-
AAyPxYI7qVyKp2QTwadhiVtc9Qg…", profileObj: Object }
我通过将整个令牌对象发送到服务器
axios.post(`${local_env_url}/gconnect`, {returnData})
我的Flask服务器已识别为:
@app.route('/gconnect', methods=['POST'])
def gconnect():
token = request.data
我该怎么办?
在文档上,它说我可以通过将令牌发送到此链接来验证令牌:
''(令牌ID)
但不清楚是发送整个令牌对象还是仅发送访问令牌值。步骤如下
id\u令牌
,而无需发送其他内容
现在,验证传递到您的Blacked服务器的ID令牌的完整性,在您的情况下,该服务器是flask
从服务器端,您需要发出http请求以验证到此端点的ID令牌-
https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123
如果令牌已正确签名且有效,您将得到HTTP 200响应,其中正文包含JSON格式的ID令牌声明
您可以从服务器端收到的响应中获取所有用户信息
要发送验证id_令牌的请求,可以使用任何python库发出http请求,也可以使用google client library for python-
from oauth2client import client, crypt
# (Receive token by HTTPS POST)
try:
idinfo = client.verify_id_token(token, CLIENT_ID)
# If multiple clients access the backend server:
if idinfo['aud'] not in [ANDROID_CLIENT_ID, IOS_CLIENT_ID, WEB_CLIENT_ID]:
raise crypt.AppIdentityError("Unrecognized client.")
if idinfo['iss'] not in ['accounts.google.com', 'https://accounts.google.com']:
raise crypt.AppIdentityError("Wrong issuer.")
if idinfo['hd'] != APPS_DOMAIN_NAME:
raise crypt.AppIdentityError("Wrong hosted domain.")
except crypt.AppIdentityError:
# Invalid token
userid = idinfo['sub']
更多信息-关于如何使用谷歌客户端库。谢谢,我昨晚已经解决了这一部分。最后一部分,当我验证令牌时,我是否将其发送回客户端以存储在localStorage中,并在每次调用我的服务器时检查它?不要存储它。您可以使用
gapi
获取令牌。