Google+ Platform for iOS

Inicio de sesión de Google+ para iOS

El botón de inicio de sesión de Google+ administra el flujo de OAuth 2.0 y el ciclo de vida del token, de modo que simplifica tu integración con las API de Google. Es más, si el usuario tiene instalada la aplicación para móviles nativa de Google+, el SDK de Google+ se integra también automáticamente en ella. De este modo, los usuarios no tendrán que volver a introducir sus credenciales de Google para autorizar tu aplicación.

Un usuario siempre tiene la opción de revocar el acceso a una aplicación en cualquier momento.

Antes de empezar

Debes crear un proyecto de Consola de API e inicializar el cliente de Google+.

Habilita el inicio de sesión

Para habilitar el inicio de sesión, debes configurar la copia virtual del singleton compartido GPPSignIn. Puedes hacerlo en muchos sitios de tu aplicación. A menudo, el modo más sencillo es configurar esta copia virtual en el método viewDidLoad del controlador de vista.

  1. En el archivo .h del controlador de vista, importa "GPPSignIn.h" e indica que esta clase implementa el protocolo GPPSignInDelegate.

    #importa "GPPSignIn.h"
    
    @interface MyViewController : UIViewController <GPPSignInDelegate>
    
  2. En el archivo .m del controlador de vista, importa GTLPlusConstants.

    #importa "GTLPlusConstants.h"
    
  3. En el método viewDidLoad del controlador de vista, configura la copia virtual del singleton GPPSignIn mediante la señalización del ID de cliente, el delegado y los alcances.

    - (void)viewDidLoad
    {
      [super viewDidLoad];
    
      GPPSignIn *signIn = [GPPSignIn sharedInstance];
      // Previamente habrás configurado kClientID en el paso "Inicializa el cliente de Google+"
      signIn.clientID = kClientID;
      signIn.scopes = [NSArray arrayWithObjects:
                       kGTLAuthScopePlusLogin, // definido en GTLPlusConstants.h
                       nil];
      signIn.delegate = self;
    
    }
    
  4. Implementa el GPPSignInDelegate en el controlador de vista para controlar el proceso de inicio de sesión mediante la definición del siguiente método.

    - (void)finishedWithAuth: (GTMOAuth2Authentication *)auth
                       error: (NSError *) error
    {
        NSLog(@"Received error %@ and auth object %@",error, auth);
    }
    
  5. En tu archivo .m de delegado de aplicación, importa GPPURLHandler.h.

    #importa "GPPURLHandler.h"
    
  6. Llama al controlador URL GPPURLHandler desde el controlador de URL del delegado de aplicación. Dicho controlador administrará adecuadamente la URL que reciba tu aplicación al final del proceso de autenticación.

    - (BOOL)application: (UIApplication *)application
                openURL: (NSURL *)url
      sourceApplication: (NSString *)sourceApplication
             annotation: (id)annotation {
     return [GPPURLHandler handleURL:url
                   sourceApplication:sourceApplication
                          annotation:annotation];
    }
    

Añade el botón de inicio de sesión

A continuación, añadirás el botón de inicio de sesión de Google+ para que el usuario pueda iniciar el proceso de inicio de sesión.

  1. Si has añadido el código de prueba [signIn authenticate] desde la sección anterior, elimina el código de tu controlador viewDidLoad.

  2. En tu archivo .h del controlador de vista, añade la declaración de clase previa para el GPPSignInButton.

    @class GPPSignInButton;
    
  3. También en el archivo .h de tu controlador de vista, indica el botón de inicio de sesión como una propiedad.

    @property (retain, nonatomic) IBOutlet GPPSignInButton *signInButton;
    
  4. En tu archivo .m del controlador de vista, importa los archivos de cabecera para el botón de inicio de sesión de Google+.

    #importa "GPPSignInButton.h"
    
  5. Sintetiza la propiedad GPPSignInButton si es necesario, aunque este paso ya no debería ser necesario en versiones más nuevas de Xcode.

    @synthesize signInButton;
    
  6. Añade el GPPSignInButton a tu storyboard, al archivo XIB o ejemplifícalo de forma planificada. GPPSignInButton hereda de UIButton, de modo que si usas un storyboard o un archivo XIB, puedes arrastrar un Botón rectangular con bordes redondeados o la Vista a tu controlador de vista y configurar su clase personalizada en GPPSignInButton.

  7. Conecta el botón a la propiedad signInButton de tu controlador de vista.

A continuación, puedes implementar y controlar el inicio de sesión automático del usuario.

Inicia automáticamente la sesión del usuario

Si ejecutas la aplicación en este punto, podrás usar el botón de inicio de sesión de Google+ para iniciar sesión en la aplicación. También te darás cuenta de que después de tu primer inicio de sesión, los intentos posteriores se producen "silenciosamente", sin que se produzca ninguna interrupción en tu aplicación.

La clase GPPSignIn tiene un método trySilentAuthentication que intenta iniciar la sesión del usuario automáticamente. Esta llamada tiene éxito si el usuario ha autorizado tu aplicación en el pasado, no se ha revocado el acceso a tu aplicación y la aplicación no solicita nuevos alcances desde el último inicio de sesión. Si esta llamada tiene éxito, llamará a tu método finishedWithAuth:error: cuando el inicio de sesión finalice.

  1. Añade la llamada [signIn trySilentAuthentication] al final de tu método viewDidLoad.

    [signIn trySilentAuthentication];
    
  2. Probablemente querrás ocultar el botón de inicio de sesión después de que el usuario haya iniciado sesión correctamente. Puedes evaluar tu propiedad authentication de GPPSignIn y, en caso de que exista, el usuario ha iniciado sesión y puedes actualizar la interfaz de forma adecuada. Por ejemplo:

    -(void)refreshInterfaceBasedOnSignIn
    {
      if ([[GPPSignIn sharedInstance] authentication]) {
        // El usuario ha iniciado sesión.
        self.signInButton.hidden = YES;
        // Lleva a cabo otras acciones aquí, como mostrar el botón de cierre de sesión
      } else {
        self.signInButton.hidden = NO;
        // Lleva a cabo otras acciones aquí
      }
    }
    
  3. Llama a este método en tu controlador finishedWithAuth:error.

    - (void)finishedWithAuth: (GTMOAuth2Authentication *)auth
                       error: (NSError *) error
    {
      NSLog(@"Received error %@ and auth object %@",error, auth);
      if (error) {
        // Haz algún error de control aquí.
      } else {
        [self refreshInterfaceBasedOnSignIn];
      }
    }
    

Cierra la sesión del usuario

Puedes usar el método signOut método del objeto GPPSignIn para cerrar la sesión de tu usuario, por ejemplo:

- (void)signOut {
  [[GPPSignIn sharedInstance] signOut];
}

Cómo revocar los tokens de acceso y desconectar la aplicación

Para cumplir con las condiciones de las políticas de programadores de Google+, debes ofrecer a los usuarios que han iniciado sesión con Google la posibilidad de desconectar de tu aplicación. Si el usuario elimina su cuenta, debes eliminar la información que tu aplicación haya obtenido de las API de Google.

El siguiente ejemplo de código muestra cómo revocar de forma planificada los tokens de acceso que tu aplicación había concedido en nombre del usuario y cómo desconectar la cuenta del usuario de tu aplicación.

- (void)disconnect {
  [[GPPSignIn sharedInstance] disconnect];
}

- (void)didDisconnectWithError:(NSError *)error {
  if (error) {
    NSLog(@"Received error %@", error);
  } else {
    // El usuario ha cerrado sesión y se ha desconectado.
    // Borra los datos del usuario como especifican las condiciones de Google+.
  }
}

El método disconnect cierra la sesión del usuario además de desconectar y revocar los tokens. No debes cerrar la sesión del usuario antes de llamar a disconnect.

Puedes activar el método disconnect mencionado anteriormente desde un botón que añadas a tu aplicación. A continuación, puedes responder a la correcta desconexión dentro del método didDisconnectWithError y activar cualquier lógica apropiada en tu aplicación o tu código secundario. Para obtener más información, consulta las reglas de eliminación de las políticas de programadores.

Pasos siguientes

El inicio de sesión habilita a tu aplicación para usar otras funciones de Google+ y para acceder a la información del perfil de Google+ del usuario:

Autenticación obligatoria

Tienes que acceder a Google+ para realizar esta acción.

Acceder a...

Desarrolladores de Google necesita tu permiso para realizar esta acción.