我正在使用GAM和Google API PHP客户端库与Google for Work集成。
我正在使用服务帐户,并且我已授权管理控制台中的客户端ID访问以下两个范围:
https://www.googleapis.com/auth/drive
https://apps-apis.google.com/a/feeds/emailsettings/2.0/
我还在Developers Console中启用了Drive API和Admin SDK。我无法看到电子邮件设置API。
我已关注this page并在测试期间授予所有范围的GAM访问权限 - 其中包括电子邮件设置范围。
我可以成功使用GAM和PHP客户端库来访问Google Drive API。但是,在尝试执行https://developers.google.com/admin-sdk/email-settings/
我相信我在管理控制台中拥有正确的授权客户端ID。当我从管理控制台中删除范围https://www.googleapis.com/auth/drive
时,它会阻止我从GAM和PHP客户端库访问Google云端硬盘。
有关尝试什么的任何建议?
答案 0 :(得分:0)
GAM不会将服务帐户用于电子邮件设置API,它会为已安装的应用程序使用标准OAuth 2.0。请确保您使用超级管理员授权GAM访问电子邮件设置API。如果没有,请运行
gam oauth revoke
然后是另一个命令:
gam all users show imap
这一次确保您以超级管理员身份登录。
答案 1 :(得分:0)
因此我创建了一个超级管理员帐户并使用它进行了身份验证的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
是超级管理员帐户的电子邮件。希望这有助于其他人。