未经授权访问电子邮件设置 Google API

Unauthorised access to Email Settings Google API

我正在使用 GAM 和 Google API PHP 客户端库与 Google for Work 集成。

我使用的是服务帐户,我已授权管理控制台中的客户端 ID 访问以下两个范围:

  1. https://www.googleapis.com/auth/drive
  2. https://apps-apis.google.com/a/feeds/emailsettings/2.0/

我还在 Developers Console 中启用了 Drive API 和 Admin SDK。我看不到电子邮件设置 API。

我已关注 this page 并在测试期间授予 GAM 访问所有范围的权限 - 其中包括电子邮件设置范围。

我可以成功使用 GAM 和 PHP 客户端库访问 Google 驱动器 API。但是,在尝试执行 https://developers.google.com/admin-sdk/email-settings/

中详述的任何电子邮件设置 API 功能时,我总是收到 403 - 未经授权

我非常有信心我在管理控制台中拥有正确的客户端 ID。当我从管理控制台中删除范围 https://www.googleapis.com/auth/drive 时,它会阻止我从 GAM 和 PHP 客户端库访问 Google 驱动器。

有什么尝试的建议吗?

GAM 不使用服务帐户进行电子邮件设置 API,它对已安装的应用程序使用标准 OAuth 2.0。请确保您使用超级管理员授权 GAM 访问电子邮件设置 API。如果没有,运行

gam oauth revoke

然后是另一个命令:

gam all users show imap

这次请确保您以超级管理员身份登录。

Jay 的 post 让我找到了答案 - 即在访问电子邮件设置 API 时我应该以超级管理员身份登录。

因此,我创建了一个超级管理员帐户并使用该帐户对 GAM 进行了身份验证。这给了 GAM 访问权限。

为了让 PHP 客户端库正常工作,我必须在创建 OAuth2 令牌时模拟超级管理员帐户。模拟管理员帐户的代码如下:

$credentials = new Google_Auth_AssertionCredentials( $service_account_email, $scopes, $private_key, 'notasecret', // Default P12 password 'http://oauth.net/grant_type/jwt/1.0/bearer', // Default grant type $admin_email );

哪里

  • $service_account_email 是在开发者控制台中创建的服务帐户的电子邮件地址 - 不是超级管理员帐户。
  • $scopes 是您需要访问的 API 个 URL 的数组
  • $private_key是从开发者控制台创建的P12证书的内容。
  • $admin_email是超级管理员账号的邮箱

希望这对其他人有帮助。