Ich versuche zu tun, um eine Web-Anwendung mit dem OAuthlib mit Google anmelden, ist das, was das Objekt Google wie folgt aussieht:Wie json Daten Python-Objekt übersetzen - Flask
google = oauth.remote_app('google',
request_token_url=None,
access_token_method='POST',
request_token_params={'scope': 'email'},
access_token_url='https://accounts.google.com/o/oauth2/token',
authorize_url='https://accounts.google.com/o/oauth2/auth',
consumer_key="my consumer",
consumer_secret="my secret",
base_url='https://www.googleapis.com/oauth2/v1/'
)
Das Problem, das ich hve ist, wenn ich die Benutzerinformationen von google zu bekommen, ist seine meine Genehmigung Ansicht:
@app.route('/login/authorized/<provider>')
def authorized():
resp = google.authorized_response()
auth_error(resp)
id_token = json.load(resp['id_token'])
login_user(me, True)
return redirect(url_for('index'))
Also, versuchen Sie, was ich mit dem json.load zu tun ist, die Information google gibt mir, in diesem speziellen Fall zu entschlüsseln, die Antwort hat eine ID_Token, die eine lange Zeichenfolge ist, die nach meinen Recherchen ist eine JSON-codierte Zeichenfolge wh en es decodiert wird, liefert alle Benutzerinformationen, egal wie sehr ich versuche ich nicht die richtige Art und Weise scheinen zu finden, sie zu entschlüsseln, ich die Fehlermeldung erhalten, ist:
AttributeError: 'unicode' object has no attribute 'read'
Auf der json.load Linie .
EDIT: nach dem Decodieren der ID_Token würde ich es dann verwenden, um den Benutzer in meiner eigenen Datenbank zu erhalten oder zu erstellen.
Ich benutze Flask und die Bibliothek ist JSON.
Wenn jemand den richtigen Weg erklären könnte, um die Zeichenfolge in ein Python-Objekt zu dekodieren, würde ich es sehr schätzen, oder wenn dies nicht JSON ist, aber eine andere Art von codierter Zeichenfolge bitte sagen. Vielen Dank im Voraus.
wenn ich json.loads verwende ich bekommen Valueerror: keine JSON-Objekt decodiert werden konnte, vielleicht bin ich nicht sehr gut erklären, was google zurückkehrt, würde ich es hier posten, aber es ist eine sehr, sehr lange Zeichenfolge, –
@ JenaroCalviño Wenn das Token wie folgt aussieht [base64] (https://en.wikipedia.org/wiki/Base64) Codierung, versuchen Sie es zuerst zu dekodieren, wie in meiner Antwort. –
@ JenaroCalviño Können Sie bitte Ihre Forschungsergebnisse zur Verfügung stellen, die darauf hindeuten, dass das 'id_token' eine JSON-Zeichenfolge ist? –