API Gmail: Недостаточное разрешение

СИТУАЦИЯ:

Я тестирую API Gmail для своего приложения.

Я тестировал несколько запросов, и они работают нормально. Например, получите сообщения, получите историю пользователей, получите черновик и т. Д.

В основном все запросы только для чтения работают нормально.

У меня есть некоторые проблемы, связанные с разрешением с другими запросами, например, когда мне приходится писать или удалять черновик.

Это ошибка, которую я получаю:

(403) Insufficient Permission 

КОД:

Это функция инициализации приложения:

 public function gmail_init_service() { $client = new Google_Client(); $client->setApplicationName("Gmail API test"); $client->setDeveloperKey("MY_KEY"); $client->setClientSecret('MY_CLIENT_SECRET'); $client->SetClientId('MY_CLIENT_ID'); $client->setScopes(array('https://mail.google.com/')); $client->setAccessToken('{"access_token":"MY_ACCESS_TOKEN","token_type":"Bearer","expires_in":3600,"refresh_token":"MY_REFRESH_TOKEN","created":1433502343}'); $service = new Google_Service_Gmail($client); return $service; } 

Это просьба удалить один проект:

 public function gmail_delete_draft() { $service = $this->gmail_init_service(); // --------------- Get draft list -------------- $list = $service->users_drafts->listUsersDrafts('me'); $draftList = $list->getDrafts(); // --------------- Get draft IDs --------------- $inbox_draft = []; foreach($draftList as $mlist) { $draftId = $mlist->id; $optParamsGet2['format'] = 'full'; $single_message = $service->users_drafts->get('me', $draftId , $optParamsGet2); $inbox_draft[]['draftId'] = $draftId; $inbox_draft[]['draft'] = $single_message; } // --------------- Delete draft --------------- $draft_delete = $service->users_drafts->delete('me', 'DRAFT_ID' ); } 

РЕДАКТИРОВАТЬ:

Я попытался отменить разрешение и установить новые учетные данные. Область, объявленная при инициализации службы, такова:

 https://mail.google.com/ 

что, как указано в документации, предоставить полный доступ к учетной записи .

Но я все равно получаю ту же ошибку. Точная ошибка для следующих запросов:

Удалить черновик – Создать черновик – Создать метку – Удалить сообщение

ВОПРОС:

Почему я получаю эту ошибку?
Это связано с тем же хранением значений в кеше?
Или связано с разрешением API?

Для создания черновика вам нужно https://www.googleapis.com/auth/gmail.compose . Итак, что произойдет, если вы

 $client->setScopes(array( 'https://mail.google.com/', 'https://www.googleapis.com/auth/gmail.compose' )); 

или если вы хотите получить более формальный

 define('SCOPES', implode(' ', array( Google_Service_Gmail::MAIL_GOOGLE_COM, Google_Service_Gmail::GMAIL_COMPOSE) )); $client->setScopes(SCOPES) 

или каким бы то ни было действительным php (я еще не сделал php).

Обратите внимание, что если у вас уже есть токен, вам может потребоваться сделать несколько слов, чтобы отменить его, чтобы вы могли переиздавать с добавленными разрешениями. Это может означать удаление файла, возможно, с именем gmail.storage или, если у вас есть доступ к учетному записям учетной записи и внес свой вклад в https://security.google.com/settings/security/permissions, разрешения доступа могут быть отменены вручную.

Эта ссылка может иметь значение: https://developers.google.com/gmail/api/auth/scopes

И меандр через исходный код может быть просветляющим.

Возможно, вы сможете узнать о моей битве с такой же штукой под Python

Для удаления почты вам необходимо https://mail.google.com/ качестве области действия.