如何在Google Assistant Actions开发中获取用户邮箱
基于Google Actions Conversation SDK获取用户邮箱的实现方案
步骤1:先检测用户邮箱是否可获取
- 首先校验用户是否为访客模式:调用SDK接口
conv.user.verification判断返回值是否为VERIFIED,如果为GUEST状态,无法获取任何用户个人信息,直接进入账号关联引导流程 - 若用户为已验证状态,检查是否存在有效访问令牌:读取
conv.user.access.token,如果该字段有值,说明用户已经完成账号关联,你可以直接用该令牌调用你自有服务的用户信息接口,查询对应用户的邮箱即可 - 如果你已经把用户邮箱存储在用户持久化存储里,也可以直接读
conv.user.storage.userEmail,不需要重复调用接口
步骤2:无权限时触发账号关联流程
如果检测到没有有效访问令牌,直接调用SDK内置的登录组件触发关联即可:
- 构造登录请求:
new SignIn('为了给你提供个性化服务,需要关联你在我们平台的账号'),把该请求作为响应返回给Google Assistant - 平台会自动拉起你之前配置的OAuth授权流程:有屏设备会直接展示授权页面,纯语音无屏设备会提示用户打开绑定的Google Home APP完成授权
- 用户在授权页登录你网页端已注册的服务账号、完成授权后,流程会自动跳转回你的对话应用
步骤3:关联成功后的后续处理
用户完成授权后,你会拿到OAuth服务返回的访问令牌,将令牌和你自有服务的用户信息绑定后,就可以获取到对应用户的邮箱,你可以将邮箱存储在conv.user.storage中,后续用户交互时直接读取即可,不需要重复触发登录流程。
注意事项
- 确保你的OAuth服务颁发的令牌和你自有平台的用户账号是一一对应的,避免出现账号匹配错误
- 不要在对话过程中明文播报用户的邮箱信息,避免泄露个人隐私
- 首次触发登录流程前,要明确告知用户关联账号的用途,降低用户的授权拒绝率
内容的提问来源于stack exchange,提问作者vishal dharankar
相关产品推荐
相关产品推荐

