如何通过Google Chat Rest API获取用户在线状态(活跃/离开)
解决Google API获取联系人在线状态的问题
正确的API选择
你需要用People API或者Google Chat API,Members API是针对Chat空间成员的,不适合单个联系人的状态查询:
- People API:适合从联系人列表中获取用户状态
- Google Chat API:更直接针对Chat/Hangouts的用户在线状态操作
解决People API无返回结果的问题
之前调用people.get没结果,核心原因是没指定需要返回的字段——People API默认不会返回所有字段,必须明确请求presence字段:
- 先通过
people.searchContacts接口,用对方邮箱user@gmail.com搜索获取其resourceName(格式类似people/123456789) - 调用
people.get时带上personFields=presence参数,示例请求:
返回结果里的GET https://people.googleapis.com/v1/people/{resourceName}?personFields=presencepresence字段会包含对方的在线状态(AVAILABLE为活跃,AWAY为离开等)
实现自身不显示活跃的效果
要达到Gmail隐身查看的效果,你需要先把自己的状态设为隐身(INVISIBLE)或者离线(OFFLINE),推荐用Google Chat API的接口:
POST https://chat.googleapis.com/v1/users/me/presence:update Content-Type: application/json { "presenceStatus": "INVISIBLE" }
设置后,你查询对方状态时就不会显示自己为活跃状态。
注意事项
- 要在Google Cloud Console中启用People API和Google Chat API
- 申请OAuth 2.0权限时,需要包含
contacts.readonly(读取联系人状态)和chat.users(修改自身状态)权限范围 - 如果对方设置了隐私权限禁止他人查看状态,你将无法获取到有效结果
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

