️ A partir de la versión 6.0.0 del complemento, la versión mínima requerida de cordova-ios es 4.5.0. ¿Necesita utilizar una versión anterior de cordova-ios? Utilice la versión del complemento 5.3.2 o inferior.
idToken
serverAuthCode
Este complemento le permite autenticar e identificar usuarios con el inicio de sesión de Google en iOS y Android. De inmediato, recibirá un correo electrónico, un nombre para mostrar, un nombre de pila, un apellido, una URL de imagen de perfil y una identificación de usuario. También puede configurarlo para obtener un idToken y serverAuthCode.
Este complemento solo incluye el acceso a la API de inicio de sesión de Google. Se debe implementar un acceso adicional a la API por caso de uso y por desarrollador.
Androide
iOS
Para comunicarte con Google necesitas realizar una configuración tediosa, lo siento.
Se recomienda (fuertemente) que utilice el mismo proyecto tanto para iOS como para Android.
Vaya a su config.xml
y asegúrese de que el nombre de su paquete (es decir, el ID de la aplicación) sea el que desea. Utilice este nombre de paquete cuando configure iOS y Android en los siguientes pasos. Si no lo hace, probablemente recibirá un error 12501, "usuario cancelado" a pesar de no cancelar nunca el proceso de inicio de sesión.
Este paso es especialmente importante si está utilizando un marco como Ionic para desarrollar su proyecto. Cuando crea el proyecto, config.xml
tiene un nombre de paquete de marcador de posición, por ejemplo, com.ionic.*, para que pueda comenzar a desarrollar de inmediato.
xml version = ' 1.0 ' encoding = ' utf-8 ' ?>
< widget id = " ** REPLACE THIS VALUE ** " ...>
...
widget >
La plataforma del navegador requiere un WEB_APPLICATION_CLIENT_ID
válido generado en Google Developer Console. Asegúrese de haber agregado su dirección URL (ejemplo: http://localhost:3000
) a la sección Orígenes autorizados de JavaScript . Vea esta captura de pantalla, por ejemplo.
Para obtener su REVERSED_CLIENT_ID
de iOS, genere un archivo de configuración aquí. Este archivo GoogleService-Info.plist
contiene el REVERSED_CLIENT_ID
que necesitará durante la instalación. Este valor sólo es necesario para iOS.
REVERSED_CLIENT_ID
también se conoce como "esquema de URL de iOS" en la consola del desarrollador.
El inicio de sesión en iOS lleva al usuario a SafariViewController a través del SDK de Google, en lugar del navegador Safari independiente.
Para configurar Android, genere un archivo de configuración aquí. Habilite el inicio de sesión de Google y agregue una aplicación de Android para agregar la huella digital SHA1. Una vez que el inicio de sesión de Google esté habilitado, Google creará automáticamente las credenciales necesarias en Developer Console para web y Android. No es necesario agregar el archivo google-services.json generado a su proyecto cordova. Es posible que deba configurar la pantalla de consentimiento.
Asegúrese de ejecutar los pasos keytool
como se explica aquí o la autenticación fallará (haga esto tanto para los almacenes de claves de lanzamiento como para los de depuración).
IMPORTANTE:
keytool
, muestra 2 tipos de huellas digitales de certificado, la versión y la depuración . Al generar el archivo de configuración, es mejor usar la huella digital del certificado de depuración , luego de eso, debe ir al Administrador de credenciales de Google y crear manualmente. una credencial para el cliente OAuth2 con su huella digital del certificado de versión . Esto es necesario para que su aplicación funcione tanto en versiones de desarrollo como de producción. $ keytool -exportcert -keystore -list -v -alias
Iniciar sesión en Android utilizará las cuentas iniciadas en el dispositivo del usuario.
Para configurar la versión de Google Play Services, puede utilizar el parámetro PLAY_SERVICES_VERSION (con el valor 11.8.0 de forma predeterminada). Es útil para evitar conflictos con otros complementos que utilizan cualquier otra versión diferente del Servicio Google Play, porque DEBEN ser la misma versión.
Google vuelve a firmar tu aplicación con un certificado diferente cuando la publicas en Play Store. Una vez publicada su aplicación, copie la huella digital SHA-1 del "Certificado de firma de aplicación", que se encuentra en la sección "Firma de aplicación" en "Administración de versiones", en Google Play Console. Pegue esta huella digital en el ID de cliente de Release OAuth en Google Credentials Manager.
Si desea recuperar un idToken
o serverAuthCode
del proceso de inicio de sesión, deberá pasar el ID de cliente de la aplicación web de su proyecto. Esto se puede encontrar en la página de credenciales API de su proyecto en la Consola de desarrollador de Google.
Este complemento es compatible con:
Así es como funciona (¡primero haga una copia de seguridad de su proyecto!):
Usando la CLI de Cordova y npm:
$ cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
Usando la CLI de Cordova para obtener la última versión de GitHub:
$ cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
IMPORTANTE:
Tenga en cuenta que myreversedclientid
es un marcador de posición para el clientId invertido que encuentra en su archivo de configuración de iOS. No rodee este valor entre comillas. (Aplicaciones solo para iOS)
Si está creando una aplicación híbrida (iOS y Android) , o una aplicación de Android, debe reemplazar myreversedclientid
con el valor inverso de ID de cliente en su credencial de versión generada en el paso 3, en la Consola de desarrollador de Google, que será: "com .googleusercontent.apps. uniqueId
" , sin comillas. Ejemplo: '123-abc123.apps.googleusercontent.com' se convierte en 'com.googleusercontent.apps.123-abc123'.
myreversedclientid
es un marcador de posición para el ID de cliente de Oauth generado específicamente para la aplicación web en la Consola de desarrollador de Google.
GooglePlus.js se incorpora automáticamente. No es necesario cambiar ni agregar nada en su html.
Agregue esto a su config.xml:
Para la versión (estable) de NPM:
< plugin name = " cordova-plugin-googleplus " source = " npm " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
plugin >
Para la última versión de Git (no recomendado):
< plugin spec = " https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git " source = " git " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
< plugin >
Este complemento utiliza el administrador de dependencias CocoaPods para satisfacer las dependencias de la biblioteca del SDK de inicio de sesión de Google de iOS.
Por lo tanto, asegúrese de tener Cocoapods instalado en su entorno de compilación de iOS; las instrucciones de configuración se pueden encontrar aquí. También asegúrese de que su repositorio local de Cocoapods esté actualizado ejecutando pod repo update
.
Si crea su proyecto en Xcode, debe abrir YourProject.xcworkspace
(no YourProject.xcodeproj
) para que tanto el proyecto de su aplicación Cordova como el proyecto Pods se carguen en Xcode.
Puede enumerar las dependencias de pods en su proyecto Cordova iOS instalando cocoapods-dependencies:
sudo gem install cocoapods-dependencies
cd platforms/ios/
pod dependencies
Consulte la aplicación de demostración para comenzar rápidamente o lastimese y siga estos pasos.
Tenga en cuenta que no se debe llamar a ninguno de estos métodos antes de que se haya activado deviceready
.
Ejemplo:
document . addEventListener ( 'deviceready' , deviceReady , false ) ;
function deviceReady ( ) {
//I get called when everything's ready for the plugin to be called!
console . log ( 'Device is ready!' ) ;
window . plugins . googleplus . trySilentLogin ( ... ) ;
}
31/03/16: Ya no es necesario verificar este método primero. Se mantiene por ortoganidad del código.
La función de inicio de sesión guía al usuario a través del proceso de autenticación de Google. Todos los parámetros son opcionales, aunque existen algunas advertencias.
Para obtener un idToken
en Android, debe pasar su webClientId
(un error frecuente es proporcionar el ID de cliente de Android). En iOS, el idToken
se incluye en el resultado del inicio de sesión de forma predeterminada.
Para obtener un serverAuthCode
, debe pasar su webClientId
y configurarlo offline
en verdadero. Si offline es verdadero, pero no se proporciona ningún webClientId, NO se solicitará el serverAuthCode
.
Los ámbitos predeterminados solicitados son profile
y email
(siempre solicitados). Para solicitar otros ámbitos, agréguelos como una lista separada por espacios al parámetro scopes
. Se solicitarán exactamente como se pasaron. Consulte la documentación de Google Scopes para obtener información sobre los alcances válidos que se pueden solicitar. Por ejemplo, 'scope': 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/tasks'
.
Naturalmente, para poder utilizar ámbitos o API adicionales, deberán estar activados en la Consola del desarrollador de su proyecto.
window . plugins . googleplus . login (
{
'scopes' : '... ' , // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true // optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
La devolución de llamada exitosa (segundo argumento) obtiene un objeto JSON con el siguiente contenido, con datos de ejemplo de mi cuenta de Google:
obj . email // '[email protected]'
obj . userId // user id
obj . displayName // 'Eddy Verbruggen'
obj . familyName // 'Verbruggen'
obj . givenName // 'Eddy'
obj . imageUrl // 'http://link-to-my-profilepic.google.com'
obj . idToken // idToken that can be exchanged to verify user identity.
obj . serverAuthCode // Auth code that can be exchanged for an access token and refresh token for offline access
obj . accessToken // OAuth2 access token
Hay información adicional para el usuario disponible por caso de uso. Agregue los ámbitos necesarios a la opción de ámbitos y luego devuelva la información al objeto de resultado que se está creando en las funciones handleSignInResult
y didSignInForUser
en Android e iOS, respectivamente.
En Android, la devolución de llamada de error (tercer argumento) recibe un código de estado de error si la autenticación no fue exitosa. Puede encontrar una descripción de esos códigos de estado en el sitio web para desarrolladores de Android de Google en GoogleSignInStatusCodes.
En iOS, la devolución de llamada de error incluirá una descripción localizada de NSError.
Puede llamar trySilentLogin
para comprobar si ya han iniciado sesión en la aplicación e iniciar sesión de forma silenciosa si lo están.
Si tiene éxito, obtendrá el mismo objeto que la función login
, pero si falla, no mostrará el cuadro de diálogo de autenticación al usuario.
Llamar trySilentLogin
se realiza de la misma manera que login
, excepto por el nombre de la función.
window . plugins . googleplus . trySilentLogin (
{
'scopes' : '... ' , // optional - space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional - clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true , // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
Se recomienda encarecidamente que trySilentLogin se implemente con las mismas opciones que el inicio de sesión, para evitar posibles complicaciones.
Esto borrará el token OAuth2.
window . plugins . googleplus . logout (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
Esto borrará el token OAuth2, olvidará qué cuenta se utilizó para iniciar sesión y desconectará esa cuenta de la aplicación. Esto requerirá que el usuario vuelva a permitir el acceso a la aplicación la próxima vez que inicie sesión. Tenga en cuenta que este efecto no siempre es instantáneo. Puede llevar tiempo desconectarse por completo.
window . plugins . googleplus . disconnect (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
idToken
Documentación de Google para la autenticación con un servidor backend
Como mencionan los artículos anteriores, el idToken
se puede intercambiar por información del usuario para confirmar la identidad del usuario.
Nota: Google no desea que los datos de identidad del usuario se envíen directamente a un servidor. El idToken es su método preferido para enviar esos datos de forma segura, ya que deben verificarse a través de sus servidores para poder descomprimirlos.
Esto tiene varios usos. En el lado del cliente, puede ser una forma de confirmar doblemente la identidad del usuario o puede usarse para obtener detalles como el dominio del host de correo electrónico. El lado del servidor es donde el idToken
realmente avanza. Es una manera fácil de confirmar la identidad de los usuarios antes de permitirles acceder a los recursos de ese servidor o antes de intercambiar el serverAuthCode
por un token de acceso y actualización (consulte la siguiente sección).
Si su servidor solo necesita identidad y no acceso adicional a la cuenta, esta es una forma segura y sencilla de proporcionar esa información.
serverAuthCode
Documentación de Google para habilitar el acceso del lado del servidor
Como mencionan los artículos anteriores, serverAuthCode
es un elemento que se puede intercambiar por un token de acceso y actualización. A diferencia de idToken
, esto permite que el lado del servidor tenga acceso directo a la cuenta de Google de los usuarios.
Solo en la solicitud de inicio de sesión inicial se devolverá serverAuthCode
. Si desea recibir el token por segunda vez, puede hacerlo cerrando sesión primero.
Tiene un par de opciones cuando se trata de este intercambio: puede usar las API REST de Google para obtenerlas en la aplicación híbrida o puede enviar el código a su servidor backend para intercambiarlo allí, utilizando cualquier método necesario (Google proporciona ejemplos). para Java, Python y JS/HTTP).
Como se indicó anteriormente, este complemento tiene que ver con la autenticación e identidad del usuario, por lo que cualquier uso de la cuenta del usuario más allá de eso debe implementarse por caso de uso, por aplicación.
P: No puedo hacer que la autenticación funcione en Android. ¿Y por qué no hay ninguna CLAVE API DE ANDROID?
R: En Android, debe ejecutar los pasos keytool
; consulte las instrucciones de instalación para obtener más detalles.
P: Después de seguir los pasos keytool
, todavía no puedo hacer que la autenticación funcione en Android. ¡¡¡Tengo un "error 10"!!!
R: Debe obtener el certificado SHA 1 de su archivo apk. Ejecute: keytool -list -printcert -jarfile
y copie el SHA 1 a su ID de cliente de Android en Google Console.
P: ¡Dios mío $@#*! la compilación de Android está fallando
R: Debe tener instalado el repositorio de soporte de Android y la biblioteca de soporte de Android en el administrador de SDK de Android. Asegúrate de utilizar una versión bastante actualizada de ellos.
P: ¿Por qué no funciona en mi emulador de Android?
R: ¡Asegúrese de estar utilizando un dispositivo virtual que se ejecuta con un objetivo de API de Google y/o una CPU de API de Google !
P: Recibo el error 10 , ¿qué hago?
R: Esto probablemente se debe a que Cordova no utiliza el almacén de claves que desea utilizar (por ejemplo, porque generó el suyo propio). Consulte https://cordova.apache.org/docs/en/latest/guide/platforms/android/#signing-an-app para leer cómo hacer esto. Algunos han informado que es necesario ejecutar cordova clean
antes de ejecutar la compilación para resolver el error 10.
P: Recibo el error 16 , ¿qué hago?
R: Esto siempre es un problema porque la firma (o huella digital) de su aplicación de Android cuando está firmada no se agrega a la lista blanca de OAuth de la consola de Google (o Firebase). Verifique nuevamente si hizo todo lo necesario para esto. Consulte la miniguía a continuación.
Primero, asegúrese de leer y comprender completamente la guía sobre firma de aplicaciones de la documentación de Android.
Después o mientras lees esto, vuelve a verificar si hiciste correctamente todos los pasos 1 a 4 a continuación:
Para firmar su aplicación (en desarrollo o publicación), deberá crear un almacén de claves local y una clave con Android Studio o mediante terminal. Google tiene una función llamada "Firma de aplicaciones de Google Play" donde guardarán la clave en su servidor y firmarán su aplicación por usted, pero si usa esta función o no, necesitará un almacén de claves local y una clave de cualquier manera.
Su almacén de claves y clave locales serán su clave oficial de firma de aplicaciones.
Deberá incluir en la lista blanca las siguientes huellas digitales clave (en formato SHA1) en la configuración de Google OAuth:
debug.keystore
predeterminada de AndroidSu almacén de claves y clave locales serán su "clave de carga" y Google crea y administra otra clave para la "clave de firma de aplicación" oficial.
Debe incluir en la lista blanca las siguientes huellas digitales clave (en formato SHA1) en la configuración de Google Oauth:
debug.keystore
predeterminada de AndroidObtenga las huellas digitales de las claves anteriores (en formato SHA1) para poder incluirlas en la lista blanca.
Para el debug.keystore
predeterminado de Android, haga lo siguiente:
keytool -exportcert -keystore /Users/myusername/.android/debug.keystore -list -v
Verá la huella digital SHA1 para la clave de depuración en la terminal. Copia eso.
Para el almacén de claves creado por usted mismo con clave (ya sea para 2A o 2B), haga:
keytool -exportcert -keystore /path/to/your/key/yourKeystoreFile.keystore -list -v
Verá la huella digital SHA1 para la clave de depuración en la terminal. Copia eso.
Solo cuando la firma de aplicaciones de Google Play está habilitada (para 2B). Puede encontrar la clave que Google utilizará para firmar sus compilaciones en Google Play Console.
Requisito: debe haber terminado la información básica en su aplicación de Android y luego debe cargar un APK firmado para pruebas internas. Una vez subido esto podrás acceder al siguiente menú:
Vaya a Gestión de versiones > Firma de aplicaciones. Allí verás
El de "Cargar" es (y debería ser) el mismo que el de la tecla B anterior. Y el "Certificado de firma de aplicación" es la clave que utilizará Google. Copia este.
Nuevamente tenemos 2 opciones para incluirlos en la lista blanca. Proyectos que usan solo Google Cloud Platform o proyectos que usan Firebase .
(En caso de que también utilices Firebase, puedes omitir este paso)