Die Weiterleitung von Chrome-benutzerdefinierten Tabs an die Android-App schließt die App

8

Ich versuche, einen OAuth2-Flow mit einem benutzerdefinierten Chrome-Tab für Android zu implementieren, aber meine App ist immer geschlossen (kein Absturz), wenn die benutzerdefinierte Chrome-Registerkarte den 302 mit dem Standort / Schema meiner App empfängt.

Wenn ich eine HTML-Seite mit einem ahref-Link erstelle und manuell darauf klicke, wechselt die benutzerdefinierte Chrome-Registerkarte korrekt zu meiner App.

Scheint so, als wenn ich die Umleitung des Servers 302 im Chrome Custom Tab behandle, wird es mein benutzerdefiniertes App-Schema nicht korrekt behandeln ... aber warum?

Wenn ich die gleiche Weiterleitungs-URL in einem Aktien-Browser oder mit einem WebView versuche, funktioniert auch alles.

Hier ist meine aktuelle Einstellung:

MainActiviy.java

%Vor%

AndroidManifest.xml

%Vor%

Dies ist die Weiterleitungs-URL, die die App mit HTTP 302-Code erhalten hat:

myappscheme: // oauth? code = 1234567 & amp; state = tokenCheck123

build.gradle

%Vor%

Danke für jede Hilfe ...

    
sysbeast 18.03.2016, 12:41
quelle

4 Antworten

5

Ich habe auch meine Android-App unerwartet nach der serverseitigen 302-Umleitung zu einem benutzerdefinierten Schema beobachtet und die erwartete Handhabung von eigenständigem Chrome und manuell ausgelöster Umleitung im Client beobachtet.

Ich konnte das Problem beheben, indem ich das Warmup aufruft Funktion vor dem Laden der URL, die umleitet.

Mit anderen Worten, das funktioniert:

%Vor%

Das funktioniert nicht:

%Vor%

Die Google Chrome-Tabs für benutzerdefinierte Tabs beschreiben das Aufwärmen als Best Practice, aber es scheint auch hilfreich zu sein Stellen Sie das erwartete Verhalten sicher.

In Bezug auf env, teste ich auf einem Nexus 5X mit Chrome 51. Meine Chrom-Tab-Abhängigkeit in Gradle sieht so aus:

%Vor%     
user1971682 21.07.2016, 02:57
quelle
0

Es hat mir geholfen, die Aktivität, mit der ich ein CustomTab in singleInstance Modus starte, in der Manifest-Datei zu setzen:

%Vor%

Und im Code tue ich wie immer:

%Vor%

Ich habe versucht, Chrome aufzuwärmen und sogar customTabsIntent.launchUrl() mit einer gewissen Verzögerung aufzurufen, nachdem ich client.warmup(0l); aufgerufen habe, und beides hat nicht geholfen.

    
dkunin 10.10.2016 18:02
quelle
0

Wenn ich android: launchMode="singleInstance" verwendet habe, gab es mehrere Instanzen im Taskmanager, also war das keine Option.

Das Starten des CustomTabsIntent mit Flag FLAG_ACTIVITY_NEW_TASK hat den Trick gemacht.

%Vor%     
Sebastian 11.10.2016 09:18
quelle
0

Ich bin mir ziemlich sicher, dass dies das Ergebnis eines Fehlers in Chrome ist. Ich habe alle meine Geräte (GS6, GS7, Nexus 7 und Nexus 9) auf die neueste Version von Chrome aktualisiert und meine App wird nicht mehr minimiert, wenn die Weiterleitung erfolgt.

Ich habe das gerade heute (11/3/2016) entdeckt, daher habe ich noch keine Informationen über den spezifischen Fehler oder dessen anschließende Lösung. Genau das ist mir aufgefallen.

Hoffe das hilft!

    
bstar55 03.11.2016 22:55
quelle