如解釋here,我試圖驗證由Android應用程序傳遞給運行python3的服務器的令牌。驗證身份驗證令牌在Android後端調用Python
我想驗證傳遞的令牌。麻煩的是,我在服務器上運行python3,但不支持google-api-python-client庫。我發現了以下解決方法:使用pyjwt並請求庫,從這個site:
import json
import jwt
import requests
GOOGLE_CERTS_URI = 'https://www.googleapis.com/oauth2/v1/certs'
class GoogleIdToken(object):
def __init__(self):
self._certs = {}
self._token = {}
def getCerts(self):
cert = requests.get(GOOGLE_CERTS_URI)
if cert.status_code == 200:
return json.loads(cert.content)
def isValid(self, token, audience, clientId=None):
self._certs = self.getCerts()
for key in self._certs:
try:
token = jwt.decode(token, key=self._certs[key], verify=False)
if 'email' in token and 'aud' in token:
if token['aud'] == audience and (clientId == token['cid'] if clientId is not None else True):
self._token = token
return True
except Exception, e:
print("Error decoding: %s" % e.message)
return False
我的兩個問題是:
- 有誰知道一個不同的和/或更好的現有解決方案,在工作中python3?
- 上述解決方案是否完整?
您是否找到了更好的解決方案? – drfence
不,我從來沒有找到一個好的解決方案。 – Alex
這是否仍適用於您或Google改變了任何內容?我自己尋找本地/自己的實現。谷歌圖書館非常臃腫。 –