2014-11-05 21 views
14

Scenario: login per App tramite Google+ AccessoGoogle Plus Accesso

Implementazione:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    GPPSignIn *aGPSSignIn = [GPPSignIn sharedInstance]; 
    aGPSSignIn.scopes = @[ kGTLAuthScopePlusLogin, kGTLAuthScopePlusUserinfoEmail, kGTLAuthScopePlusUserinfoProfile, kGTLAuthScopePlusMe]; 
    aGPSSignIn.shouldFetchGoogleUserEmail = YES; 
    aGPSSignIn.shouldFetchGooglePlusUser =YES; 
    aGPSSignIn.homeServerClientID = kClientID; 
    aGPSSignIn.clientID = kClientID; 
    aGPSSignIn.delegate = self; 
    if (![aGPSSignIn trySilentAuthentication]) { 
     [self showLoginButton]; 
    } 
} 

- (void)showLoginButton { 
    if (!self.signInButton) {   
     self.signInButton = [GPPSignInButton buttonWithType:UIButtonTypeCustom]; 
     [self.signInButton setFrame:CGRectMake(60, 100, 200, 40)]; 
    } 
    [self.view addSubview:self.signInButton]; 
} 

#pragma mark - GPPSignInDelegate 

- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error { 
    NSString *anAccessToken = auth.accessToken; 
    NSLog(@"googleAccessToken:%@",anAccessToken); 
} 

- (void)didDisconnectWithError:(NSError *)iError { 
    if (iError) { 
     NSLog(@"Error:%@", iError); 
    } 
} 

Nota: - (BOOL)application: (UIApplication *)application openURL: (NSURL *)url sourceApplication:(NSString *)sourceApplication annotation: (id)annotation viene gestito nel AppDelegate.

Problema:

  • Il login Google+ funziona perfettamente bene quando l'utente fa clic sul pulsante Google SignIn ed è navigato al Safari. Un AccessToken valido viene ricevuto nella mia app.
  • Tuttavia, se l'app Google+ è disponibile su iPhone, l'utente viene spostato nell'app Google+ ma su Accedi non viene ricevuto AccessToken. Ottengo un errore.

Errore:

Received error Error Domain=com.google.GooglePlusPlatform Code=-1 "The operation couldn’t be completed. (com.google.HTTPStatus error 400.)" UserInfo=0x15d95f90 {NSLocalizedDescription=The operation couldn’t be completed. (com.google.HTTPStatus error 400.)} and auth object (null)

Sarà molto utile se qualcuno mi può guidare nella soluzione di questo problema. Grazie.

+0

Hai messo la tua app s ID bundle su Google Developer Console? Questo è l'unico modo per avviare l'app da WebView o Safari nell'API di Google+. – khunshan

+0

Sì. Sì, ma l'errore rimane lo stesso. – Nishi

+0

@Nishi Hai qualche soluzione? Sto affrontando lo stesso numero http://stackoverflow.com/questions/30160104/authentication-not-working-with-google-app – Tariq

risposta

3

Imposta lo schema URL nel progetto.

passi:

  • Login your developer account
  • selezionare il progetto
  • selezionare API & autenticazione dalla barra laterale
  • selezionano le credenziali
  • copiare il 'REDIRECT URIS' e 'ID BUNDLE'
  • Progetto Oen Xcode
  • selezionare target del progetto
  • selezionare 'Info'
  • espandere i tipi di URL
  • incollare il 'ID BUNDLE' nella zona Identifier
  • incollare il 'redirect URIS' nella zona Schemi URL

Se non funziona prova sostituendo il 'REDIRECT URIS' con 'BUNDLE ID', cioè, l'Identificatore e gli Schemi URL sono gli stessi.

Spero che questo possa aiutare a

+0

Ho provato a sostituire REDIRECT URIS 'con' BUNDLE ID ', sfortunatamente non ha funzionato. – Nishi

+0

Non ha funzionato anche me – Tariq

0

si può provare a mettere il codice in questa funzione in applicazione delegato

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

e commentare questa funzione e mi dica il risultato

- (BOOL)application: (UIApplication *)application openURL: (NSURL *)url 

sourceApplication : (NSString *) sourceApplication annotation: (id) annotation

+0

Quando sostituisco il metodo precedente con l'applicazione "- (BOOL): (UIApplication *) application openURL: (NSURL *) url", ottengo la risposta token come: "tokenResponse? E = The% 20operation% 20couldn % E2% 80% 99T% 20be% 20completed.% 20% 28com.google.HTTPStatus% 20error% 20400.% 29 & code =". – Nishi

Problemi correlati