2016-08-29 5 views
1

Ich arbeite an einem Projekt, bei dem ich mehrere Labels mit jeder E-Mail verknüpft habe. Ich möchte die Labels mithilfe der Google Mail-PHP-API entfernen. Ich habe die Dokumentation verfolgt und alle Schritte ausgeführt. Aber ich weiß nicht, warum ich Fehler erhalte, wenn ich versuche, das Etikett zu entfernen.Etikett in GMAIL PHP API kann nicht entfernt werden

Dies ist der Code, der dem Projekt zugeordnet ist. Bitte helfen Sie mir mit irgendwelchen Gedanken.

$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

Dies ist der Fehler, den ich bekam Ein Fehler ist aufgetreten: Fehler beim Aufruf von POST https://www.googleapis.com/gmail/v1/users/me/messages/156d80449f28bd94/modify: (403) Unzureichende Berechtigung –

Antwort

0

gegeben, wie in Standard Error Responses für Google APIs, 403: insufficientPermissions Fehlercode bedeutet, dass der authentifizierte Benutzer nicht über ausreichende Berechtigungen verfügen nicht über diese Anforderung auszuführen.

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

Für weitere Informationen über Bereiche, gehen Sie bitte über Choose Auth Scopes:

Etiketten zu löschen, können Sie diesen Anwendungsbereich Code in Ihre Berechtigungen verfügen sollte.

+0

Hi Teyam, Danke für das Beantworten meiner Frage. Ich habe diese zwei Wege versucht. Bitte korrigiere mich, wenn ich falsch liege. –

+0

setScopes (array ('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()); $ schlüssel = file_get_contents ($ key_file_location); // var_dump ($ key); $ cred = new Google_Auth_AssertionCredentials ( $ service_account_name, Array ( /* \t 'https://www.googleapis.com/auth/gmail.send', \t ‚https://www.googleapis.com/ auth/gmail.compose‘, \t 'https://www.googleapis.com/auth/gmail.modify', */ \t 'https://www.googleapis.com/auth/gmail.labels' ), –