You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发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来获取邮箱:

  1. 确保你的授权流程已经拿到包含userinfo.email权限的访问令牌
  2. 调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:35:55