¿Cómo crear una cuenta de usuario _segmentar desde un token de Google para Android?

He encontrado algunos fragmentos de información útil.

Http://blog.parse.com/announcements/bring-your-own-login/ me muestra cómo iniciar sesión en una aplicación de Android una vez que tengo un token de Parse.

Puedo obtener con éxito un token de Google para la cuenta de Google de un teléfono.

Https://developers.google.com/android/guides/http-auth

/** * Gets an authentication token from Google and handles any * GoogleAuthException that may occur. */ protected String fetchToken() throws IOException { try { return GoogleAuthUtil.getToken(mActivity, mEmail, mScope); } catch (UserRecoverableAuthException userRecoverableException) { // GooglePlayServices.apk is either old, disabled, or not present // so we need to show the user some UI in the activity to recover. mActivity.handleGoogleException(userRecoverableException); } catch (GoogleAuthException fatalException) { // Some other type of unrecoverable exception has occurred. // Report and log the error as appropriate for your app. } return null; } 

¿Cómo puede Parse utilizar un token de Google para crear un token de análisis?

Supongo que esto implicará la escritura de algunos código de la nube, pero no estoy claro en lo que ese código de la nube debe hacer. Creo que necesita para crear o encontrar un nuevo _User para el token de Google y devolver el token de análisis.

¿Hay ejemplos de código de Cloud de Parse de cómo manejar el inicio / registro de Google Android, o ejemplos de algo que no sea Faceboook / Twitter?

Nota: Esta respuesta no se aplica al servidor de análisis de código abierto, ya que sólo utiliza sesiones revocables. Consulte parse-server / issues / 1392 para más información

Actualización (enero-2016):

Debe desactivar la sesión revocable para llamar a getSessionToken en Parse.User . Ir a Ajustes de la aplicación >> Usuarios >> Desactivar Requerir sesiones revocables . Esto no es nuevo en 2016, pero en el momento de dar respuesta, el autor no sabía de este cambio.


Voy a romper en 2 casos para más fácil de seguir: Nuevo usuario y el usuario que regresa.

1. Nuevo usuario

El flujo es el siguiente:

  1. El usuario autoriza y se adquiere un token
  2. Creamos un nuevo usuario con una contraseña aleatoria

Puede crear un ParseUser utilizando el siguiente código dentro del método newChooseAccountIntent() que devuelve el correo electrónico.

 ParseUser user = new ParseUser(); user.setUsername(mEmail); user.setPassword(randomPassword); user.setEmail(mEmail); user.signUpInBackground(new SignUpCallback() { public void done(ParseException e) { if (e == null) { // Hooray! Let them use the app now. } else { // Sign up didn't succeed. Look at the ParseException // to figure out what went wrong } } }); 

2. Devolución de Usuario

Éste es el donde la mayoría de la gente pegada, mientras que investigado sobre el Internet. El flujo es el siguiente:

  1. El usuario autoriza y la aplicación recibe un token
  2. Pasamos este símbolo a Cloud Code para validarlo. Necesitamos comprobar si este token está firmado por Google y si es para nosotros ( android-developers (2013)).
  3. Después de comprobar que el token es válido, puede consultar el usuario en Cloud Code utilizando el método Parse.Cloud.useMasterKey() y devolver la clave de sesión mediante el método getSessionToken() en el resultado de la consulta.
  4. Utilice la clave de sesión para guardar el estado de inicio de sesión en el disco llamando becomeInBackground método becomeInBackground

Para validar el token , puede enviar Parse.Cloud.httprequest a este punto final: https://www.googleapis.com/oauth2/v3/tokeninfo?access_token= . Esto se indica en la documentación de identidad de Google . Usted recibirá los datos como a continuación:

 { "iss": "https://accounts.google.com", "sub": "110169484474386276334", "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com", "email": "[email protected]", "at_hash": "X_B3Z3Fi4udZ2mf75RWo3w", "email_verified": "true", "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com", "iat": "1433978353", "exp": "1433981953" } 

Las cosas que hay que comparar son "aud", "azp" y "correo electrónico" que se traducen como audiencia, parte autorizada y correo electrónico.

Para consultar el usuario actual en Cloud Code :

 var query = new Parse.Query(Parse.User); query.equalTo("email",mEmail); query.first({ success: function(user) { // Use user..getSessionToken() to get a session token }, error: function(user, error) { // }, useMasterKey: true }); 

Nota: Asegúrate de tener el siguiente ámbito para que el correo electrónico se muestre al consultar el Código de la nube: https://www.googleapis.com/auth/plus.profile.emails.read

  • KnoxVpnUidStorageknoxVpnSupported Valor de API devuelto es error falso al usar Parse api
  • ¿Anulando la notificación push en BroadcastReceiver (PushBots)?
  • Navegar hasta la actividad de los padres desde la notificación
  • Facebook Login no funciona correctamente (Parse)
  • La aplicación que implementa Parse Unity Plugin se bloquea en el dispositivo android pero funciona bien en el editor
  • ¿Cómo enlazar a Google + usuarios registrados en el backend de Parse en Android?
  • ¿Hay alguna manera recomendada de crear un id para un ParseObject para usar en un RecyclerView?
  • Cómo obtener objectId en Parse.com android
  • ¿Es posible crear un objeto Parse desde JSON
  • GCM y el conflicto de notificación de Parse
  • SaveAllInBackground no funciona dentro de deleteAllInBackground como se desee
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.