谷歌云端点+Android中的GoogleApiClient,未经GET_ACCOUNTS许可



是否有任何方法可以使用GoogleApiClient在android应用程序中验证Google端点,而无需强制获得GET_ACCOUNTS权限?

具有新运行时权限的Android 23+将向用户请求不需要的READ_CONTACTS权限。奇怪的是,所有带有谷歌端点的安卓应用程序现在都需要READ_CONTACTS权限。

我能找到的最接近StackOverflow的问题是这个,但它声称它可能只在非常有限的时间内工作。这篇谷歌帖子提供了一些使用代币的指导,但不适用于端点。

我终于找到了解决方案。我更新了你提到的问题的答案。

要避免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());

相关内容

最新更新