2017-04-13 2 views
-1

J'ai besoin de google + signIn tokenId.Google signIn tokenId is invalid_token

Voici mon code:

var mGSO = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
        .requestIdToken(WEB_CLIENT_ID)//from developer console 
        .requestEmail() 
        .build() 
      mGoogleApiClient = GoogleApiClient.Builder(mActivity) 
        .enableAutoManage(mActivity, this) 
        .addApi(Auth.GOOGLE_SIGN_IN_API, mGSO) 
        .build() 

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 
     super.onActivityResult(requestCode, resultCode, data) 
     val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data) 
     var tokenId = result.signInAccount.idToken 
    } 

Alors je reçois avec succès tokenId, mais lorsque je tente de le vérifier ici (https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=) Je reçois un message:

{ 
"error": "invalid_token", 
"error_description": "Invalid Value" 
} 

Token la même chaque fois que je essayez de l'obtenir! Que se passe-t-il? Une idée pour résoudre ce problème?

MISE À JOUR

trouvé ce numéro: https://github.com/PhilipGarnero/django-rest-framework-social-oauth2/issues/61

j'utilisais le mauvais jeton de google de mon connexion sur iOS. I utilisé à l'origine user.authentication.idToken qui est faux, et ne fonctionne pas.

Le jeton correct est user.authentication.accessToken.

mais je ne peux pas trouver une accessToken similaire à l'objet GoogleSignInResult ....

MISE A JOUR 2

J'utilise apk de débogage. ici est mon bouton code de clic:

fun onGooglePlusClicked(v: View) { 
     val signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient) 
     mActivity?.startActivityForResult(signInIntent, GOOGLE_SIGN_IN) 
    } 
+0

Avez-vous utilisé firebase Auth dans cette connexion pour – Nithinlal

+0

non, seulement google + connexion –

+0

Assurez-vous que le fichier est dans le google-services.json dans le position.That correct dans le dossier de l'application – Nithinlal

Répondre

0

La réponse a été fondée ici: https://developers.google.com/identity/protocols/CrossClientAuth

Mots clés: GoogleAuthUtil.getToken()

donc, voici mon code mis à jour:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 
     super.onActivityResult(requestCode, resultCode, data) 
     val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data) 

     Observable.create(Observable.OnSubscribe<String> { 
        var **accessTokent** = GoogleAuthUtil.getToken(mActivity!!, result.signInAccount.account, "oauth2:" + Scopes.PLUS_LOGIN) 
        //send token to server 
       }) 
         .subscribeOn(Schedulers.io()) 
         .observeOn(AndroidSchedulers.mainThread()) 
         .subscribe() 
    } 

espérons que cela aidera quelqu'un :)