Мне нужно получить идентификатор токена входа в Google+.
Вот мой код:
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
}
Итак, я успешно получаю tokenId, но когда пытаюсь проверить его здесь (https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=) Я получаю сообщение:
{
"error": "invalid_token",
"error_description": "Invalid Value"
}
Токен один и тот же каждый раз, когда я пытаюсь его получить! Что происходит? Есть идеи, как это исправить?
ОБНОВЛЕНИЕ
нашел эту проблему: https://github.com/PhilipGarnero/django-rest-framework-social-oauth2/issues/61
Я использовал неправильный токен Google при входе в iOS. Первоначально я использовал user.authentication.idToken, что неверно и не будет работать.
Правильный токен — user.authentication.accessToken.
но я не могу найти аналогичный accessToken в объекте GoogleSignInResult....
ОБНОВЛЕНИЕ 2
Я использую отладочный apk. вот мой код нажатия кнопки:
fun onGooglePlusClicked(v: View) {
val signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
mActivity?.startActivityForResult(signInIntent, GOOGLE_SIGN_IN)
}