Я работаю над приложением, которое может отображать изображения из Google Фото.
Проблема
Проблема возникла, когда пользователь вручную отозвал мое приложение внутри Gmail Разрешение . После того, как пользователь сделает это (отозвать разрешение), снова откройте приложение, и когда приложение пытается получить доступ к списку изображений из Google Фото, это ошибка, которую я получил в JSON.
{
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
После этого я выхожу из Google Sign In и отменяю его. Я снова вхожу, появилось всплывающее окно для выбора учетной записи Gmail, но всплывающее окно с разрешением для приложения «Грант» не появилось. Он должен отображаться так, чтобы приложение могло снова запросить у пользователя разрешение.
Предоставить всплывающее окно разрешения приложения. ![enter image description here](https://i.stack.imgur.com/T93X4.png)
Вот как я могу войти в Google Войти
val googleSignInOptions =
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(Scope("https://www.googleapis.com/auth/photoslibrary.readonly"))
.requestEmail()
.build()
val googleSignInClient = GoogleSignIn.getClient(context, googleSignInOptions!!)
Вот как я могу выйти и отозвать код
googleSignInClient?.signOut()
?.addOnCompleteListener {
//Sign Out Complete
googleSignInClient?.revokeAccess()?.addOnCompleteListener {
//Revoke Complete
}
}
Мои наблюдения
- Несмотря на то, что разрешение на странице Разрешение Gmail уже отозвано,
GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(context), Scope(GOOGLE_PHOTOS_READ_SCOPE))
все еще возвращает значение true. По логике он должен возвращать false, потому что пользователь уже отозвал разрешение. - Даже если приложение уже выходит из системы Google Sign In, при повторном входе в систему пользователь получит тот же токен доступа, что и предыдущий предоставленный. что срок действия истекает в течение 1 часа.
Конец дня, я хотел бы иметь возможность показывать всплывающее окно разрешения приложения, даже если пользователь вручную отозвал разрешение. Спасибо.