2017-09-14 4 views
0

Je suis en mesure de recevoir jeton id google avec GoogleSignInAccount.getIdToken() ainsi j'ai quelques questions sur la façon de traiter avec elletravailler avec google jeton id sur android

  1. Token est d'environ 1kb string.I ne peut pas l'envoyer avec chaque requête de serveur. Alors, quelle est la manière correcte comment puis-je la valider sur le serveur?
  2. Je ne vois aucune méthode pour actualiser le jeton d'identité. Est-ce que cela se produit automatiquement dans la classe GoogleSignInAccount?
  3. Existe-t-il une limite (quota) à la vérification des jetons par google?

Répondre

0

1.To pas surcharger le serveur nous avons décidé de générer un jeton d'accès interne (courte) avec le même temps d'expiration (1 heure)

2.Token actualisation peut être obtenue en appelant à nouveau la fonction de connexion:

private void loginGoogle(){ 
     //context is Activity 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestIdToken(context.getString(R.string.default_web_client_id)).requestEmail() 
       .build(); 
     if (googleApiClient!=null) { 
      googleApiClient.stopAutoManage((FragmentActivity) context); 
      googleApiClient.disconnect(); 
     } 
     googleApiClient = new GoogleApiClient.Builder(context) 
       .enableAutoManage((FragmentActivity) context, new GoogleApiClient.OnConnectionFailedListener() { 
        @Override 
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
         Log.d("auth", "connection failed"); 
        } 
       }) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 
     // 
     OptionalPendingResult<GoogleSignInResult> opr = 
       Auth.GoogleSignInApi.silentSignIn(googleApiClient); 
     if (opr.isDone()) { 
      GoogleSignInResult r = opr.get(); 
      Log.d("auth", "google silent signin sync"); 
      fillGoogleProfile(r.getSignInAccount()); 
     } else { 
      opr.setResultCallback(new ResultCallback<GoogleSignInResult>() { 
       @Override 
       public void onResult(@NonNull GoogleSignInResult result) { 
        Log.d("auth", "google silent signin async"); 
        if (result.getSignInAccount()==null) { 
         Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient); 
         //catch result in the onActivityResult 
         context.startActivityForResult(signInIntent, RC_SIGN_IN); 
         return; 
        } 
        fillGoogleProfile(result.getSignInAccount()); 
       } 
      }); 
     } 
    } 

3.N'a pas trouvé de réponse