Google OneTap是否兼容Google APIs?Android日历API接入疑问
Google Calendar API 授权与调用指南(基于OneTap)
纠正误解:OAuth consent screen 并非只能通过旧版Google Sign-in触发,OneTap API只要配置了需要授权的API scope,就能自动唤起授权界面。你之前没看到授权弹窗,是因为只请求了idToken,没添加Calendar API的权限范围。
后续操作步骤:
修改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,让用户授权访问日历。
从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调用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
相关产品推荐
相关产品推荐

