Google-Nutzer nicht abrufen, wenn Sie sich mit einer anderen Google App mit GIDSignIn anmelden

8

Ich verwende die Google-Anmeldung für iOS , und wenn Sie den Simulator verwenden, ist dies der Fall funktioniert gut, weil keine Google App installiert ist und der Benutzer abgerufen wird, aber wenn Sie mein iPhone 6-Gerät verwenden, öffnen Sie Youtube (mit einem registrierten Konto darin) für die Handle-Anmeldung. Danach, wenn Sie wieder auf den App-Code kommen, geben Sie diese Funktion nicht ein:

%Vor%

Jeder kann mir helfen Ich kann keine andere Funktion für die Anmeldung verwenden Ich muss [[GIDSignIn sharedIstance] signIn] aufrufen und diese Funktion erkennt, ob eine andere Google App installiert ist und automatisch eine andere Google App oder Webview öffnet.

    
Ridney 16.06.2015, 09:51
quelle

4 Antworten

1
%Vor%

} // Dies ist ein Login mit Google Mail-Konto nicht für googleplus. Kopieren Sie einfach und in Ihrem Controller vorbei. und fügen Sie folgende Funktion in Ihrer AppDelegate-Klasse hinzu

%Vor%     
Ayaz Akbar 28.07.2016, 12:44
quelle
4

Ich habe das Problem gelöst, indem ich einige Eigenschaften für die GIDSignIn-Instanz richtig festgelegt habe. Zum Beispiel:

%Vor%     
Vignesh Shiv 01.09.2015 13:19
quelle
2

Ich gehe davon aus, dass Sie GIDSignin mit Ihrem eigenen Server verwenden, bei dem Sie eine serverclientID mit Ihrem GIDSignin hinzufügen müssen. Dadurch würde meine App gezwungen, youtube oder google plus zu verwenden, um sich einzuloggen, anstatt eine Webansicht oder sogar einen Browser zu öffnen. Dies würde einen GIDSigninError = -1 "einen möglicherweise behebbaren Fehler .." zurückgeben und dem Benutzer nicht erlauben, sich anzumelden.

Ich habe dies gelöst, indem ich URLs von Google oder Youtube blockierte, bevor sie durch Überschreiben der Funktion "canOpenURL" von UIApplication geöffnet wurden. Ich habe dies getan, indem ich UIApplication abgeleitet und canOpenURL wie folgt implementiert habe:

%Vor%

Beachten Sie, dass in der Regel nach argv ein Nullwert vorhanden ist, aber hier fügen Sie Ihre Unterklasse von UIApplication ein. Dies ist auch, wie Sie Ihre eigene Unterklasse von AppDelegate verwenden können.

Die andere Lösung wäre, eine Kategorie in UIApplication zu erstellen, die canOpenURL überschreibt und swizzling verwendet, um die ursprüngliche Implementierung in Ihrer benutzerdefinierten canOpenURL aufzurufen. Dies ist ein guter Artikel zum Swizzling: Ссылка

Ich muss Sie jedoch warnen, diese beiden Lösungen sind Hacks und Sie müssen wirklich vorsichtig sein mit den Nebenwirkungen, die dies für Ihre Anwendung haben kann. Ich bin mir nicht einmal sicher, dass Apple damit einverstanden wäre.

    
Diego Watanabe 03.09.2015 04:03
quelle
0

Das Problem für mich war das

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!)

existiert nicht mehr, verwenden Sie stattdessen

public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!)

Beachten Sie den Unterschied didSignInForUser vs. didSignInFor . Höchstwahrscheinlich nach dem Update des SDK auf swift 3.

    
Ali Amin 30.09.2017 08:56
quelle