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

时间:2015-04-27 10:29:00

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

我正在使用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/
  3. 我还在Developers Console中启用了Drive API和Admin SDK。我无法看到电子邮件设置API。

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

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

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

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

    有关尝试什么的任何建议?

2 个答案:

答案 0 :(得分:0)

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

gam oauth revoke

然后是另一个命令:

gam all users show imap

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

答案 1 :(得分:0)

杰伊的帖子让我得到了答案 - 即我应该在访问电子邮件设置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网址数组
  • $private_key是从开发人员控制台创建的P12证书的内容。
  • $admin_email是超级管理员帐户的电子邮件。

希望这有助于其他人。