2016-08-29 3 views
1

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

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

$client_id = '[email protected]'; 
    $service_account_name = '[email protected] 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(); 
    } 
} 
+1

Это ошибка, которую я получил Произошла ошибка: Ошибка при вызове POST https://www.googleapis.com/gmail/v1/users/me/messages/156d80449f28bd94/modify: (403) Недостаточно разрешения –

ответ

0

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

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

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

Для получения более подробной информации о прицелах, пожалуйста, пройти через Choose Auth Scopes.

+0

Привет, Teyam, Спасибо, что ответили на мой вопрос. Я пробовал эти два пути. Пожалуйста, поправьте меня, если я ошибаюсь. –

+0

setScopes (массив ('https://www.googleapis.com/auth/gmail.labels')); $ client-> setApplicationName ("Client_Library_Examples"); –

+0

if (isset ($ _ SESSION ['service_token'])) { $ client-> setAccessToken ($ _ SESSION ['service_token']); } // var_dump ($ client-> getAccessToken()); $ key = file_get_contents ($ key_file_location); // var_dump ($ key); $ креди = новые Google_Auth_AssertionCredentials ( $ service_account_name, массив ( /* \t 'https://www.googleapis.com/auth/gmail.send', \t «https://www.googleapis.com/ авториз/gmail.compose», \t 'https://www.googleapis.com/auth/gmail.modify', */ \t 'https://www.googleapis.com/auth/gmail.labels' ), –

Смежные вопросы