Wie bekomme ich ein Refresh-Token mit GIDSignIn und GTMOAuth2Authentication in iOS?

8

Ich schreibe eine iOS-App, die Google GIDSignIn [1] verwendet, um Benutzer anzumelden, und GTLServiceYoutube, um Abfragen gegen Youtube auszuführen (Hochladen von Videos und Abrufen von Youtube-Videolisten).

Dies funktioniert gut, wenn sich der Benutzer zum ersten Mal anmeldet, aber nach ungefähr einer Stunde läuft das Zugriffstoken ab und der Benutzer kann aufgrund eines 401-Fehlers (ungültige Anmeldedaten) keine Abfragen mehr mit GTLServiceYoutube ausführen.

Ich verwende den folgenden Code, um die GTMOAuth2Authentication nach erfolgreicher Anmeldung festzulegen:

%Vor%

wobei [[UserManager sharedInstance].youTubeService eine Instanz von GTLServiceYouTube ist.

Das einzige Problem ist mit dem GTLServiceYouTube. GIDSignIn scheint die Aktualisierungstoken zu behandeln, so dass der Benutzer nach der ersten Anmeldung immer angemeldet ist. Aber die GTLOAuth2Authentication funktioniert nur bei der ersten Anmeldung und ist nach einer Stunde unterbrochen.

Also meine Frage ist: Mache ich hier etwas falsch? Oder fehlt mir etwas, um nach der Aktualisierung das richtige Zugriffstoken in GTMOAuth2Authentication zu erhalten?

[1] Ссылка

    
hjortgaard 29.05.2015, 06:24
quelle

3 Antworten

3

Ich glaube, die korrekte Vorgehensweise besteht darin, den Benutzer wieder zu registrieren, wenn die App erneut geöffnet wird oder das Token aktualisiert werden muss. Dies kann durch Aufruf von [[GIDSignIn sharedInstance] signInSilently] geschehen. Wenn die Anmeldung abgeschlossen ist, aktualisieren Sie den Schlüsselbund oder Datenspeicher mit Ihren neuen Authentifizierungs-Token.

    
charliebeckwith 13.06.2015 21:13
quelle
2

Ab dem GoogleSignIn 2.1.0 aktualisiert ein Aufruf von [GIDSignIn sharedInstance].signInSilently; die in [GIDSignIn sharedInstance].currentUser.authentication gespeicherten Anmeldeinformationen.

Führen Sie pod update in Ihrem Projekt aus, um auf das 2.1.0 SDK zu aktualisieren, wenn Sie Cocoapods verwenden.

    
class 02.06.2015 20:06
quelle
0

Mit GTMOAuth2Authentication können Sie eine Aktualisierung des Authentifizierungs-Tokens mit der Methode authorizeRequest: erzwingen.

Von GTMOAuth2Authentication.h

%Vor%

Implementierung:

%Vor%     
JAL 29.05.2015 14:44
quelle