ooqd-project / refresh_token_2_test.py
kevin
使用google Firebase Auth REST API endpoint获取token
0b1c11c
# Firebase Admin SDK方式
# from firebase_admin import auth
#
import json
from http.client import responses
FIREBASE_API_KEY = "AIzaSyCMMynYm5VRHj1NOwkfWinX-HYsFArdUbk"
#
# def refresh_id_token(refresh_token):
# try:
# # 使用 refresh token 交换新的 ID token
# response = auth.refresh_id_token(refresh_token)
#
# # 返回新的凭证
# return {
# 'id_token': response['id_token'], # 新的ID token
# 'refresh_token': response['refresh_token'], # 新的refresh token(如果有返回)
# 'expires_in': response['expires_in'] # 有效期(秒)
# }
# except Exception as e:
# print(f"刷新token失败: {e}")
# return None
# REST API方式
import requests
def refresh_token_via_rest(refresh_token):
# Firebase Auth REST API endpoint
url = f"https://securetoken.googleapis.com/v1/token?key={FIREBASE_API_KEY}"
payload = {
'grant_type': 'refresh_token',
'refresh_token': refresh_token
}
try:
response = requests.post(url, json=payload)
if response.status_code == 200:
data = response.json()
print(json.dumps(data, indent=2))
return {
'id_token': data['id_token'],
'refresh_token': data.get('refresh_token'),
'expires_in': data['expires_in']
}
else:
print(f"刷新失败: {response.text}")
return None
except Exception as e:
print(f"请求异常: {e}")
return None
refresh_token = "AMf-vBy8gSoAKnafgEWe5eUHj8nLzefge1MnjCsIupEElzOEexgiNS7Fc8Z8SlQFeKIs-oQHmy-xvmJYOZL0EwV7CpCRWIXmB0HqNewaAEQvfWzZzBC8wVLCmpXOZCp4d0mQ1V209GEyh770aAG8q_9N6Uj-_bvotUu2aih2qC5KbhavRRG4CF04llpAib2x2-1gqA7f8sniEy0MEnJPSvbL-Qy7AkGt_MyIOFC0R9ofrNgYAPi87rjpE55JBJ38bpkmOgH3WZ3KBGYkVNM_0AWoxih7oZCfN-XjrNrGuuZRhhDofnuD_ab22tXIoqw24pYONv9JJ6qT_FQlxMnvUC7FrPSE9U8L2FDYBWjJmUd0Cxr4a7TmcqmemurBTh0tcRZp0yu0XmkRjp0su4JdzTODCzPQNk1utVD_oCR_TAm00SbZ-VG66qc"
response = refresh_token_via_rest(refresh_token)
# print(json.dump(response, indent=2) if response else "刷新失败")