Silent Google Anmelden im Android-Hintergrund-Service

8

Ich habe einen Hintergrunddienst in meiner Android-App. Ich verwende das IdToken, das ich von der Anmeldeaktivität erhält, um mich am Backend-Server zu authentifizieren. Der Dienst wird im Modus START_STICKY ausgeführt. Selbst wenn die App geschlossen wird, wird der Dienst im Hintergrund ausgeführt, um Benachrichtigungen vom Back-End-Server zu erhalten. Das Problem, vor dem ich stehe, ist, wenn das IdToken abläuft, ich kann es nicht im Dienst selbst erneuern. Die Rückruffunktion erhält kein Ergebnis, wenn das Token abgelaufen ist. Wenn das Token noch nicht abgelaufen ist, erhält es sofort das Ergebnis.

Hier ist der Code für die signIn-Funktion und handleSignIn-Funktion.

%Vor%     
sarasgupta 07.01.2016, 11:52
quelle

2 Antworten

0

Versuchen Sie, das

zu verschieben %Vor%

vor seiner if-Anweisung. Ich weiß, dass die Google Docs sagen, dass es so ist, wie Sie es tun, und ich habe das Gleiche gemacht, bis ich feststellte, dass ResultCallback niemals aufgerufen wird, wenn es erst im else-Block initialisiert wird, nachdem opr bereits ausgeführt wurde.

Ihr Code sollte so aussehen, nachdem Sie meinem Vorschlag gefolgt sind:

%Vor%     
Elliott 28.03.2017 02:11
quelle
0

Habe das gleiche Problem, also hier sind meine bisherigen Ergebnisse.

Bevor der Token abläuft, verwendet der Anmeldevorgang nicht den Google API-Client.

Wenn das Token abgelaufen ist, wird der Google API-Client verwendet und muss beim Aufruf von silentSignIn () verbunden werden. Sie können es manuell mit blockingConnect () oder automatisch mit enableAutoManage () verbinden (wenn Sie in einer Aktivität sind).

In Ihrem Fall sieht es so aus, als sollten Sie zumindest den Client verbinden.

Aber es gibt noch mehr ... Wenn das ID-Token abgelaufen ist, beinhaltet der Anmeldevorgang das Empfangen eines Aktivitätsergebnisses, das Sie nur in einer Aktivität und nicht in einem Service durchführen können.

    
Thibault 06.11.2017 02:53
quelle