开发Gmail插件:已知所需权限,如何获取当前用户邮箱ID?
获取Gmail插件用户邮箱地址的实现方案
嘿,我之前开发Gmail插件时也碰到过这个问题,其实操作起来没那么复杂,我给你梳理下具体步骤:
第一步:确认权限配置到位
首先得确保你已经在插件的配置文件里正确声明了https://www.googleapis.com/auth/userinfo.email权限。如果是用Google Apps Script开发,直接修改appsscript.json的oauthScopes数组:
{ "oauthScopes": [ "https://www.googleapis.com/auth/gmail.addons.execute", "https://www.googleapis.com/auth/userinfo.email" // 这里可以添加你需要的其他权限 ] }
当用户第一次打开插件时,系统会自动弹出授权请求,用户同意后插件就能获取到邮箱权限了。
第二步:具体获取邮箱的方法
如果你用的是Google Apps Script
这是最便捷的方式,直接通过Session对象就能拿到用户邮箱:
function getCurrentUserEmail() { const userEmail = Session.getActiveUser().getEmail(); console.log("当前使用插件的用户邮箱:", userEmail); return userEmail; }
你可以在插件的初始化逻辑(比如侧边栏加载时)调用这个函数,就能拿到当前用户的邮箱地址。
如果你用REST API开发(非Apps Script)
如果是用其他语言调用Gmail API构建插件,授权完成后可以调用People API来获取邮箱:
- 确保你的授权流程已经拿到包含
userinfo.email权限的访问令牌 - 调用
people.get接口,指定personFields=emailAddresses参数,示例代码(JavaScript):
async function fetchUserEmail(accessToken) { const response = await fetch('https://people.googleapis.com/v1/people/me?personFields=emailAddresses', { headers: { 'Authorization': `Bearer ${accessToken}` } }); const userData = await response.json(); // 提取用户的主邮箱地址 const primaryEmail = userData.emailAddresses.find(item => item.metadata.primary).value; return primaryEmail; }
一些注意点
- 必须等用户完成授权后再调用获取邮箱的逻辑,否则会抛出权限不足的错误
- 如果是面向G Suite域用户的插件,可能需要域管理员预先批准相关权限,否则普通用户无法完成授权
内容的提问来源于stack exchange,提问作者Sandeep Chikhale
相关产品推荐
相关产品推荐

