2016-09-27 1 views
5

Google Anmeldung war mit Xcode 7 in Ordnung. Nach der Aktualisierung auf Xcode 8, habe ich den Fehler: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'You must specify |clientID| for |GIDSignIn|' bekommen. Ich habe eine GoogleService-Info.plist-Datei mit meiner CLIENT_ID.Sie müssen | ClientID | angeben für | GIDSignIn | Fehler beim Versuch, sich mit Google anzumelden

Ich konnte es beheben, indem Sie die folgende Zeile hinzufügen:

GIDSignIn.sharedInstance().clientID = "<CLIENT_ID>" 

Es ist die CLIENT_ID scheint von GoogleService-Info.plist wird nicht abgerufen wird. Ich habe dafür gesorgt, dass es in den Copy Bundle Resources steht.

enter image description here

Ich soll nicht die Client-ID im Code angeben. Wie kann ich das beheben, um die Informationen aus der GoogleService-Info.plist-Datei zu erhalten?

Antwort

1

Ich hatte das gleiche Problem. Eigentlich wurde GoogleServices-Info.plist in meinem Fall aktualisiert. Ich wieder GoogleServices-Info.plist heruntergeladen und aktualisiert es mit dem älteren, die das Problem für mich behoben.

0

Ich löse es mit vergessenen Code AppDelegate Klasse hinzufügen:

#import "AppDelegate.h" 
#import <Google/SignIn.h>  

@interface AppDelegate()<GIDSignInDelegate> 

@end 

@implementation AppDelegate 

#pragma mark - UIApplicationDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    //Google sign-in setup 
    NSError* configureError; 
    [[GGLContext sharedInstance] configureWithError: &configureError]; 
    if (configureError) { 
     NSLog(@"Error configuring Google services: %@", configureError.localizedDescription); 
    } 

    [GIDSignIn sharedInstance].delegate = self; 

    return YES; 
} 


#pragma mark - GIDSignInDelegate 

- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error { 
    //add your code here 
} 

- (void)signIn:(GIDSignIn *)signIn didDisconnectWithUser:(GIDGoogleUser *)user withError:(NSError *)error { 
    //add your code here 
} 

@end 
6

Sie können es auf diese Weise tun.

GIDSignIn.sharedInstance().clientID = FIRApp.defaultApp()?.options.clientID 
+0

Schreiben Sie dieses Ding in AppDelegate-Datei nach FirebaseApp.configure(). – hussain

0

swift 3 in AppDelegate hinzufügen:

var configureError: NSError? 
GGLContext.sharedInstance().configureWithError(&configureError) 
assert(configureError == nil, "Error configuring Google services: \ 
(String(describing: configureError))") 
0

Bitte stellen Sie sicher, dass Sie diesen Code in Folge haben.

FirebaseApp.configure() 

GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID 
GIDSignIn.sharedInstance().delegate = self 

FirebaseApp.app()?.options.clientID werden nur Daten aus GoogleService-Info.plist zu erhalten, nachdem FirebaseApp.configure() genannt wird.

Verwandte Themen