2017-04-13 4 views
-1

Google + signIn tokenIdを取得する必要があります。GoogleのsignInのトークンIDが無効です。

ここに私のコードです:だから私は成功したのTokenIdを得る

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 
    } 

が、私はここに(https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=を)それをチェックしようとすると、私はメッセージが表示されます。

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

トークンが同じたびに、私はそれを取得しよう! 何が起こっていますか? これを修正する方法はありますか?

UPDATE

この問題が見つかりました:https://github.com/PhilipGarnero/django-rest-framework-social-oauth2/issues/61

私は私のサインインのiOS上から間違ったGoogleのトークンを使用していました。私は が間違っているuser.authentication.idTokenを元々使用しており、 は動作しません。

正しいトークンはuser.authentication.accessTokenです。

が、私はGoogleSignInResultオブジェクトの任意の同様のaccessTokenを見つけるカント....

UPDATE 2

私はデバッグAPKを使用しています。ここ は私のボタンクリックコードです:

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

ログイン用にfirebase Authを使用しましたか – Nithinlal

+0

いいえ、Google +ログイン –

+0

ファイルが正しい位置にあるgoogle-services.jsonにあることを確認してください。アプリフォルダ – Nithinlal

答えて

0

答えがここに設立されました: https://developers.google.com/identity/protocols/CrossClientAuth

キーワード:GoogleAuthUtil.getToken()

ので、ここで私の更新されたコードです:

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() 
    } 

希望これは誰かを助けるでしょう:)

関連する問題