Невозможно удалить ярлык в GMAIL PHP API

Я работаю над проектом, в котором у меня есть несколько ярлыков, связанных с каждым письмом. Я хочу удалить метки, используя gmail PHP API. Я следовал за документацией, и я сделал все шаги. Но я не знаю, почему я получаю сообщение об ошибке, когда пытаюсь удалить ярлык.

Это код, который связан с проектом. Пожалуйста, помогите мне с любыми мыслями.

  $client_id = 'aoppedisano@tecnavi.com';
  $service_account_name = 'anthony@teak-truck- 130612.iam.gserviceaccount.com';
  $key_file_location = 'anthony.p12';
  $userid_from='aoppedisano@tecnavi.com';
  $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();
   }
 }

1 ответ

Как указано в стандартных ответах об ошибках для API Google, 403: insufficientPermissions Код ошибки означает, что аутентифицированный пользователь не имеет достаточных разрешений для выполнения этого запроса.

Чтобы удалить метки, у вас должен быть этот код области в ваших разрешениях:

https://www.googleapis.com/auth/gmail.labels

Для получения более подробной информации о областях, пожалуйста, перейдите через Выбор областей проверки подлинности.

Другие вопросы по тегам