我正在尝试使用此PHP
代码来充当电子邮件的角色(它是超级管理员):
$email = 'an email with the same domain';
$credentials_file = '../service-account.json';
putenv('GOOGLE_APPLICATION_CREDENTIALS='.$credentials_file);
// Initialize Google Client
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
// scopes to change signature
$client->setScopes(['https://www.googleapis.com/auth/gmail.settings.basic',
'https://www.googleapis.com/auth/gmail.settings.sharing',
'https://www.googleapis.com/auth/gmail.readonly', 'https://www.googleapis.com/auth/userinfo.profile']);
// Initialize Gmail
$gmail = new Google_Service_Gmail($client);
// set signature
$signature = new Google_Service_Gmail_SendAs();
// update signature
我正在使用最新的PHP SDK
。该电子邮件始终与超级管理员电子邮件具有相同的域,但他/她并不总是超级管理员。
我尝试过的是:
var_dump($gmail->users->getProfile($email));
,但出现错误:
failedPrecondition, 消息:错误的请求”
我从这里读到Google Docs,我需要列出的权限之一,并且拥有https://www.googleapis.com/auth/gmail.readonly
,我已经将其添加到Google管理员控制台中以供超级管理员用户使用。
如何获得具有相同域的用户电子邮件的角色?
答案 0 :(得分:1)
基于the PHP API client docs,您需要在调用$client->setSubject($email)
之前添加new Google_Service_Gmail($client)
,因为在调用Gmail API之前需要模拟用户。