未经授权访问电子邮件设置 Google API
Unauthorised access to Email Settings Google API
我正在使用 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 驱动器 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
是超级管理员账号的邮箱
希望这对其他人有帮助。
我正在使用 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 驱动器 API。但是,在尝试执行 https://developers.google.com/admin-sdk/email-settings/
我非常有信心我在管理控制台中拥有正确的客户端 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
是超级管理员账号的邮箱
希望这对其他人有帮助。