【问题标题】:Unauthorised access to Email Settings Google API未经授权访问电子邮件设置 Google API
【发布时间】:2015-04-27 10:28:59
【问题描述】:

我同时使用 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/

我还在开发者控制台中启用了 Drive API 和 Admin SDK。我看不到电子邮件设置 API。

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

我可以成功地使用 GAM 和 PHP 客户端库来访问 Google Drive API。但是,在尝试执行https://developers.google.com/admin-sdk/email-settings/ 中详述的任何电子邮件设置 API 功能时,我总是得到 403 - Unauthorized

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

有什么建议可以尝试吗?

【问题讨论】:

  • 你能展示你的代码吗?
  • 我可以显示我为 GAM 执行的命令,因为它更简单。我已经从输出中删除了标识符。 > gam oauth info OAuth 文件:C:\temp\bin\gam-64\oauth2.txt 客户端 ID: Secret: 范围:
  • 不知道为什么要展示 GAM,因为它有效。如果您希望帮助识别问题,则需要显示您的代码。
  • 当我尝试访问电子邮件设置 API 时,GAM 也不起作用 - 它仅适用于 Drive API

标签: google-api google-api-php-client


【解决方案1】:

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

gam oauth revoke

然后是另一个命令,例如:

gam all users show imap

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

【讨论】:

    【解决方案2】:

    Jay 的帖子让我得到了答案——即在访问电子邮件设置 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 是超级管理员帐号的邮箱。

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 2016-06-21
      • 2012-12-23
      • 2012-07-22
      • 1970-01-01
      • 2016-08-12
      • 2011-09-27
      相关资源
      最近更新 更多