集成Google Fit API时如何获取登录用户邮箱及用户ID?
解决Google Fit API中获取用户信息及参数的问题
首先得明确一点:Google Fit API本身并不直接返回用户的邮箱或基础身份信息——Fit API的核心是处理健身数据,用户身份相关的信息需要借助Google的身份验证体系来获取,而不是通过Fit的接口。下面分两部分帮你解决问题:
一、获取登录用户的邮箱和用户ID
你不需要通过Fit API来拿这些信息,而是要从OAuth 2.0的授权流程里获取:
- 在用户完成OAuth授权后,你的回调接口会收到一个ID Token,解码这个Token就能直接拿到用户的邮箱、用户ID(对应Token里的
sub字段)等基础信息,完全不用额外调用API。 - 如果需要更详细的用户资料,可以调用Google People API的
people.get接口,参数直接用people/me指代当前授权的用户,就能获取包括邮箱在内的身份数据。注意要确保你发起OAuth请求时,已经申请了email和profile这类必要的权限范围(scope)。
二、获取userId和dataSourceId参数
针对你提到的users/dataSources/get接口,这两个参数的获取其实很简单:
- userId:对于当前已授权的用户,你完全不需要手动获取具体的ID,直接用字符串
"me"代替就行——Google的绝大多数API都支持用me来指代当前登录并授权的用户,Fit API也遵循这个规则。 - dataSourceId:这个参数对应具体的数据源(比如用户的手机、智能手表,或者某个健身应用)。如果你不知道具体的ID,可以先调用
users/dataSources/list接口,同样用me作为userId参数,接口会返回当前用户关联的所有数据源,每个数据源对象里都会包含dataSourceId,你可以从中挑选需要的ID来调用get接口。
举个简单的请求示例(用me作为userId):
GET https://www.googleapis.com/fitness/v1/users/me/dataSources
这个请求会返回当前用户的所有数据源列表,你就能从中提取出需要的dataSourceId了。
最后要提醒的是,确保你的OAuth授权范围包含了Fit API相关的权限(比如https://www.googleapis.com/auth/fitness.activity.read),否则会出现权限不足的错误。
内容的提问来源于stack exchange,提问作者Malvi Panchal
相关产品推荐
相关产品推荐

