google api php client — использование PHP для доступа к Gmail с использованием служебной учетной записи

Я пытаюсь составить список электронных писем со стандартной учетной записи Gmail (не учетной записи Google Apps), используя OAuth2 и служебную учетную запись (на самом деле, я хочу отправлять электронные письма, но это может подождать).

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

Ошибка обновления токена OAuth2, сообщение: error_description "Unauthorized client or scope in request."

(Для информации. Если я закомментирую строку $ credential-> sub =…, я получу следующую ошибку: “(500) Backend Error” и я вижу, что это регистрируется на вкладке «Использование» на странице API разработчиков).

Кто-нибудь может подтвердить, что то, что я пытаюсь сделать, возможно? И если да, есть идеи, куда идти дальше?

Вот мой код:

class mail
{
private $service;

public function __construct($clientid, $keyfile, $account_name, $app_name)
{
$client = new Google_Client();
$client->setApplicationName($app_name);
$this->service = new Google_Service_Gmail($client);

// Load the key in PKCS 12 format
$key = file_get_contents($keyfile);
$client->setClientId($clientid);

$credentials = new Google_Auth_AssertionCredentials(
$account_name, array('https://mail.google.com/'),$key);
$credentials->sub = '[email protected]';

$client->setAssertionCredentials($credentials);
}
public function list_mail()
{
try
{
$result = $this->service->users_messages->listUsersMessages("me");
}
catch (Exception $e)
{
throw new Exception("Gmail API error: ".$e->getMessage()."<br />");
}
return $result;
}
}

$mail_obj = new mail(CLIENT_ID, KEY_FILE, SERVICE_ACCOUNT_NAME, APP_NAME);
$result = $mail_obj->list_mail();

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]