Google Plus Login

Escenario: Iniciar session en la aplicación a través de Google+ Login

Implementación:

- (void)viewDidLoad { [super viewDidLoad]; GPPSignIn *aGPSSignIn = [GPPSignIn shanetworkingInstance]; 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 se maneja en AppDelegate.

Problema:

  • El inicio de session de Google+ funciona perfectamente cuando el usuario hace clic en el button SignIn de Google y navega hacia Safari. Se recibe un AccessToken válido en mi aplicación.
  • Sin embargo, si la aplicación de Google+ está disponible en el iPhone, el usuario navega hacia la aplicación de Google+, pero en Login no se recibe AccessToken. Me sale un error

Error:

Error recibido Error Domain = com.google.GooglePlusPlatform Code = -1 "La operación no pudo completarse (com.google.HTTPStatus error 400.)" UserInfo = 0x15d95f90 {NSLocalizedDescription = La operación no se pudo completar. (com.google.HTTPStatus error 400.)} y el object auth (nulo)

Será muy útil si alguien me puede guiar para resolver este problema. Gracias.

Configura el esquema de URL en el proyecto.

pasos:

  • Inicie session en su count de desarrollador
  • selecciona tu proyecto
  • seleccionar APIs y auth de la barra lateral
  • seleccionar cnetworkingenciales
  • copie el 'REDIRECT URIS' y 'BUNDLE ID'
  • Proyecto Oen Xcode
  • seleccionar objective del proyecto
  • select 'Info'
  • expandir los types de URL
  • pegue el 'BUNDLE ID' en el área de Identificador
  • pegue el 'REDIRECT URIS' en el área de Esquemas de URL

Si no funciona, intente reemplazando el 'REDIRECT URIS' con 'BUNDLE ID', es decir, el Identificador y los Esquemas de URL son los mismos.

Espero que esto te pueda ayudar

¿Puedes intentar poner tu código en esta function en el delegado de la aplicación?

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

y comenta esta function y dime el resultado

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

sourceApplication: (NSString *) sourceApplication annotation: (id) anotación