You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google OneTap是否兼容Google APIs?Android日历API接入疑问

Google Calendar API 授权与调用指南(基于OneTap)
  • 纠正误解:OAuth consent screen 并非只能通过旧版Google Sign-in触发,OneTap API只要配置了需要授权的API scope,就能自动唤起授权界面。你之前没看到授权弹窗,是因为只请求了idToken,没添加Calendar API的权限范围。

  • 后续操作步骤:

    1. 修改OneTap请求,添加Calendar授权范围
      在构建OneTap的SignInRequest时,加入Calendar API的scope,比如只读权限用https://www.googleapis.com/auth/calendar.readonly,读写权限用https://www.googleapis.com/auth/calendar。示例代码:

      val signInRequest = BeginSignInRequest.builder()
          .setGoogleIdTokenRequestOptions(
              BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
                  .setSupported(true)
                  // 添加Calendar权限scope
                  .setScopes(arrayOf("https://www.googleapis.com/auth/calendar.readonly"))
                  .setServerClientId(YOUR_WEB_CLIENT_ID)
                  .build()
          )
          .build()
      

      这样配置后,OneTap会自动触发OAuth consent screen,让用户授权访问日历。

    2. 从Credential中获取Access Token
      成功登录并授权后,从返回的Credential对象中获取Access Token,这是调用Calendar API的凭证:

      val credential = oneTapClient.getSignInCredentialFromIntent(data)
      val accessToken = credential.accessToken
      // 若需要长期授权,可获取刷新令牌(需在请求中设置setPrompt(Prompt.SELECT_ACCOUNT))
      val refreshToken = credential.refreshToken
      
    3. 调用Google Calendar API
      你可以选择两种方式调用API:

      • 使用Google官方的Calendar Client Library:初始化Calendar服务时传入Access Token,直接调用封装好的方法。
      • 直接通过HTTP请求:在请求头中添加Authorization: Bearer ${accessToken},向Calendar API的端点发送请求。
  • 必要的Cloud Console配置

    • 确保已在Google Cloud Console中启用Google Calendar API。
    • 在OAuth consent screen中,添加你使用的Calendar scope,并完成应用信息配置。
    • 确认OAuth 2.0客户端ID已关联你的Android应用的SHA-1指纹和包名。

内容的提问来源于stack exchange,提问作者goodboi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:55:18