有没有办法在不强制拥有GET_ACCOUNTS权限的情况下,使用GoogleApiClient对安卓应用中的谷歌端点进行身份验证?
然后,具有新的运行时权限的Android 23+将要求用户提供不需要的READ_CONTACTS权限。奇怪的是,所有带有谷歌端点的安卓应用程序现在都需要READ_CONTACTS权限。
我能找到的最接近的StackOverflow问题是this,但它声称它可能只在非常有限的时间内工作。这个Google post提供了一些使用令牌的指导,但不是针对端点的。
发布于 2018-11-25 22:50:44
我终于找到了解决方案。我更新了答案on the question you mentioned。
要避免1小时令牌限制,请在每次呼叫端点之前使用GoogleSignInApi.silentSignIn()获取新令牌。例如,如果您不在UI线程中:
GoogleSignInOptions options = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail()
.requestIdToken(CLIENT_ID)
.build();
GoogleSignInClient client = GoogleSignIn.getClient(context, options);
GoogleSignInAccount user = Tasks.await(getGoogleSignInClient(context).silentSignIn());
// Use the new user token as before
GoogleCredential credential = new GoogleCredential.Builder().setTransport(new NetHttpTransport())
.setJsonFactory(JacksonFactory.getDefaultInstance())
.build();
credential.setAccessToken(user.getIdToken());https://stackoverflow.com/questions/36253242
复制相似问题