Я предполагаю, что ошибка связана с типом доступа, когда я изменил тип доступа, он дал мне еще одну ошибку.Я предполагаю, что это вызывает ошибку, говорящую о том, что у вас нет прав доступа к вашей учетной записи.Это может быть связано с неправильным токеном доступа в файле crdentials.json или с истечением срока действия маркера доступа.Однако сворачивание приведенного выше кода.Я попытался понять и написал простой.
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new Google_Client();
$client->setScopes(Google_Service_Gmail::GMAIL_COMPOSE );
$client->setAuthConfig('client_secret.json');
$credentialsPath = __DIR__.'/credentials.json';
if (file_exists($credentialsPath)) {
$accessToken = json_decode(file_get_contents($credentialsPath), true);
} else {
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:\n%s\n", $authUrl);
print 'Enter verification code: ';
$authCode = trim(fgets(STDIN));
$accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
if (!file_exists(dirname($credentialsPath))) {
mkdir(dirname($credentialsPath), 0700, true);
}
file_put_contents($credentialsPath, json_encode($accessToken));
printf("Credentials saved to %s\n", $credentialsPath);
}
$client->setAccessToken($accessToken);
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
}
$service = new Google_Service_Gmail($client);
try {
$strSubject = "Verificaion mail";
$strRawMessage = "From: Me<rammanojpotla1608@gmail.com>\r\n";
$strRawMessage .= "To: manoj<rammanoj.potla@gmail.com>\r\n";
$strRawMessage .= "CC: rammanoj<rammanojpotla1608@gmail.com>\r\n";
$strRawMessage .= "Subject: =?utf-8?B?" . base64_encode($strSubject) . "?=\r\n";
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
$msg = new Google_Service_Gmail_Message();
$msg->setRaw($mime);
$service->users_messages->send("me", $msg);
echo "mail sent";
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
?>
Google_client создает новый клиент Google.Сетевые прицелы необходимы для определения типа операций, которые вы собираетесь выполнять с указанным или предоставленным вам доступом.Сначала он проверяет, существует ли файл с именем credentials.json или нет.Если он есть, он обращается к access_token пользователя и выполняет желаемую операцию.Здесь моя операция заключается в отправке почты с использованием Gmail API.Итак, я создал новый класс Google_Service_Gmail для его выполнения.Если файл credentials.json отсутствует, он обращается к файлу client_secret.json, который содержит client_id и client_secrent.Используя оба из них, вы можете сгенерировать свой токен доступа.