Я работаю над проектом, в котором у меня есть несколько ярлыков, связанных с каждым письмом. Я хочу удалить метки, используя gmail PHP API. Я следовал за документацией, и я сделал все шаги. Но я не знаю, почему я получаю сообщение об ошибке, когда я пытаюсь удалить ярлык.
Это код, который связан с проектом. Пожалуйста, помогите мне с любыми мыслями.
$client_id = '[email protected]';
$service_account_name = 'anthony@teak-truck- 130612.iam.gserviceaccount.com';
$key_file_location = 'anthony.p12';
$userid_from='[email protected]';
$client = new Google_Client();
var_dump($client);
$client->setScopes(array('https://www.googleapis.com/auth/gmail.modify'));
$client->setApplicationName("Client_Library_Examples");
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array(
/*
'https://www.googleapis.com/auth/gmail.send',
'https://www.googleapis.com/auth/gmail.compose',
'https://www.googleapis.com/auth/gmail.modify',
*/
'https://www.googleapis.com/auth/gmail.readonly'
),
$key
);
//var_dump($cred);
$cred->sub=$userid_from; //<-- Important!
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$service = new Google_Service_Gmail($client);
$messageId=$_REQUEST["id"];
$userId = 'me';
$optParamsGet = [];
$optParamsGet['format'] = 'full';
$message = $service->users_messages->get('me',$messageId,$optParamsGet);
$labelsToRemove=$_REQUEST['label'];
$labelsToAdd=[];
$message=modifyMessage($service,$userId, $messageId, $labelsToAdd, $labelsToRemove);function modifyMessage($service, $userId, $messageId, $labelsToAdd, $labelsToRemove) {
$mods = new Google_Service_Gmail_ModifyMessageRequest();
$mods->setAddLabelIds($labelsToAdd);
$mods->setRemoveLabelIds($labelsToRemove);
try {
$message = $service->users_messages->modify($userId, $messageId, $mods);
print 'Message with ID: ' . $messageId . ' successfully modified.';
return $message;
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
}
}
Как дано в Стандартные ответы об ошибках для API Google, 403: insufficientPermissions
Код ошибки означает, что аутентифицированный пользователь не имеет достаточных разрешений для выполнения этого запроса.
Чтобы удалить метки, у вас должен быть этот код области в ваших разрешениях:
https://www.googleapis.com/auth/gmail.labels
Для получения более подробной информации об областях, пожалуйста, пройдите Выберите Auth Scopes.
Других решений пока нет …