未经授权访问电子邮件设置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/

我还在开发人员控制台中启用了驱动器API和管理SDK。我看不到电子邮件设置API。

我关注了这个页面,并在测试期间授予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 Drive。

有什么建议吗?

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

gam oauth revoke

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

gam all users show imap

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

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是超级管理员帐户的电子邮件

希望这能帮助其他人。

相关内容

  • 没有找到相关文章

最新更新