有没有办法在使用GoogleApiClient的Android应用中对经过身份验证的Google终端进行验证,而不必强制获得GET_ACCOUNTS权限?
然后,具有新运行时权限的Android 23+将询问用户不受欢迎的READ_CONTACTS权限。使用Google Endpoints的所有Android应用程序现在都需要READ_CONTACTS权限,这似乎很奇怪。我能找到的最接近的StackOverflow问题是this,但它声称它可能只在非常有限的时间内工作。此Google post提供了一些使用令牌的指导,但不适用于终端。
答案 0 :(得分:0)
我终于找到了解决方案。我更新了答案on the question you mentioned。
为避免1小时令牌限制,请使用 GoogleSignInApi.silentSignIn()以在每次 打电话给您的端点。例如,如果您不在用户界面中 线程:
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());