usar puede google cuenta best apps app ios google-signin ios8-share-extension share-extension

ios - puede - cuenta google en iphone



Recuperar el usuario de Google de la extensión de iOS (3)

1. En Bridging-Header.h

import <GoogleSignIn/GoogleSignIn.h> import <Google/Core.h>

2. En AppDelegate.swift

import Google

En la application:didFinishLaunchingWithOptionslaunchOptions: configure el objeto GGLContext :

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { var configureError: NSError? GGLContext.sharedInstance().configureWithError(&configureError) assert(configureError == nil, "Error configuring Google services: /(configureError)") GIDSignIn.sharedInstance().clientID = "client id" GIDSignIn.sharedInstance.shouldFetchBasicProfile = true GIDSignIn.sharedInstance().delegate = self }

Luego, agregue una vista GIDSignInButton a su aplicación.

Por último, en el controlador de vista, implemente el signIn:didSignInForUser: delegate al que se llamará cuando se signIn:didSignInForUser: botón de inicio de sesión tapped: al autorizar la aplicación.

- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error { // Perform any operations on signed in user here. // ... }

3. Compartir credenciales entre aplicaciones / extensiones

Cuando inicies sesión en el marco de Google, tendrás que utilizar métodos nativos de iOS para agregar las nuevas credenciales al llavero de iOS. Por lo tanto, usarán el método SecItemAdd(_:_:) que agregará uno o más elementos a un llavero.

Para acceder al mismo elemento de llavero tanto en la aplicación como en la extensión, debe habilitar el "Compartir llavero" tanto para la aplicación como para la extensión de la sección de Capacidades de Xcode en la configuración de su proyecto. Cuando haga esto, Xcode probablemente querrá actualizar su ID de aplicación y sus perfiles de aprovisionamiento, porque deben reflejar esta nueva capacidad. Es probable que tenga que volver a autorizar la aplicación (Paso 2) para obtener las credenciales en el grupo correcto.

La documentación de Apple establece claramente:

Si desea que el nuevo elemento de llavero se comparta entre varias aplicaciones, incluya la clave kSecAttrAccessGroup en el diccionario de atributos. El valor de esta clave debe ser el nombre de un grupo de acceso de llavero al que pertenecen todos los programas que compartirán este elemento.

Cuando utiliza Xcode para crear una aplicación, Xcode agrega un derecho de identificador de aplicación al paquete de la aplicación. Keychain Services utiliza este derecho para otorgar a la aplicación acceso a sus propios elementos de llavero. También puede agregar un derecho de grupos de acceso de llavero a la aplicación y, en el archivo de lista de propiedades de derecho, especificar una matriz de grupos de acceso de llavero al que pertenece la aplicación.

4. Consejos adicionales de Google que no he mencionado anteriormente.

Por favor vea "Iniciar sesión en Google para iOS" . Aquí está el código de ejemplo para usar GIDSignIn :

  1. Obtenga una referencia a la instancia compartida de GIDSignIn : GIDSignIn *signIn = [GIDSignIn sharedInstance];
  2. Establezca los ámbitos de OAuth 2.0 que desea solicitar: [signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
  3. Llame a [signIn setDelegate:self];
  4. Configure el método delegado signIn:didSignInForUser:withError:
  5. Llame a handleURL en la instancia compartida desde la application:openUrl: ... en su delegado de aplicación.
  6. Llamada signIn en la instancia compartida;

Estoy intentando crear una extensión compartida para mi aplicación que requiere iniciar sesión en Google desde la extensión. He configurado el llavero de grupo para compartir y puedo escribir desde la aplicación principal y leer el destino de la extensión. Pero no puedo iniciar sesión en Google desde la extensión porque GIDSignIn.sharedInstance().hasAuthInKeychain() siempre devuelve false.

¿Hay alguna forma de iniciar sesión en Google desde una extensión y cómo lo hago? Cualquier ayuda sería apreciada.



Para hacer esto, necesita habilitar el uso Keychain Sharing de Keychain Sharing en el panel "Capacidades" de su proyecto. Esto permitirá que tanto la extensión como la aplicación principal compartan la contraseña.

La documentación de Apple sobre Compartir Llavero está aquí .