首页 > 解决方案 > 在 Android 上通过一键式登录使用 Google Drive API

问题描述

我在我的 Android 应用程序中实现了 Google 的 One-Tap Sign-Up/In,通过它我SignInCredential使用oneTapClient.getSignInCredentialFromIntent(result.data). 我可以进一步idToken从这个SignInCredential对象中获得。

此外,我想使用 Drive API 访问用户的 Google Drive(我已启用 API 并从 API 控制台中选择了所需的范围),我认为这需要我实现 OAuth2 流程,如下所示:

val cred = GoogleAccountCredential.usingOAuth2(this,Collections.singleton(Scopes.DRIVE_FILE))
cred.selectedAccount
val googleDriveService = com.google.api.services.drive.Drive.Builder(AndroidHttp.newCompatibleTransport(), GsonFactory(), cred ) 
    .setApplicationName(getString(R.string.app_name))
    .build()

我的问题是如何处理idToken从 One-Tap 流程获得的信息?我应该以某种方式将它传递给 OAuth2 调用吗?我参考了这个 oauth2 文档Google API Clients for Java 的这些文档,但它们都没有回答上述问题。如果有的话,我如何进一步“接收”oauth 令牌?

提前谢谢你。

标签: androidgoogle-drive-apigoogle-oauthgoogle-drive-android-apigoogle-one-tap

解决方案


One-Tab 是一种面向帐户创建和登录的服务。如概述文档所述:

只需轻轻一按,他们(用户)就可以通过您的服务获得一个安全、基于令牌、无密码的帐户,并受他们的 Google 帐户保护

另一方面,如果您想以用户身份与 API 交互,则需要使用 OAuth 2.0。方法以处理身份验证流程。此服务独立于 One-Tap,因此每个服务都需要不同的令牌。如果您需要使用 Drive API,可以按照此快速入门来开发有效的 OAuth 2.0 令牌流。


推荐阅读