2015-03-23 2 views
1

Я пытаюсь запустить API Google (gmail) в задании php cron.running google api in php cron job

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

вот код:

require_once 'Google/autoload.php'; 
require_once 'Google/Client.php'; 
require_once 'Google/Service/Gmail.php'; 
$client = new Google_Client(); 
$client->setClientId($google_clientID); 
$client->setClientSecret($google_secret); 
$client->setRedirectUri($emm_redirecturi); 
$client->addScope('email'); 
//$client->addScope('profile');  
$client->addScope('https://mail.google.com');   
$client->setAccessType('offline'); 

$client->setDeveloperKey($google_key); 
$client->setApprovalPrompt('auto'); 

$gmailService = new Google_Service_Gmail($client); 

кто был в состоянии взломать это? Я искал в документации, но не мог понять это.

сообщение об ошибке: Неустранимая ошибка: исключить исключение «Google_Auth_Exception» с сообщением «Ошибка получения маркера доступа OAuth2, сообщение:« invalid_grant: неверный код.

Все хорошо, пока не назовешь службу google. (в данном случае Google_Service_Gmail). Все учетные данные верны.

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

ответ

1

У меня была такая же проблема, но я наткнулся на токен обновления.

$client->setAccessToken($credentials); 
$client->refreshToken($refresh); 

Я создал тип файла cookie, который длится несколько лет, чтобы скрипт мог прочитать токен обновления. Необходимо создать токен обновления. Для создания этого токена я запускал похожий скрипт, который у меня есть в браузере, видел, какие поля Google возвращает, а остальное - просто для его тиражирования. Необходимыми учетными данными были токен доступа, токен, истечение срока действия, маркер id, токен обновления и создание. Вот шаги:

1) Посетите authUrl, что он будет генерировать

$authUrl = getAuthorizationUrl("", ""); //This will create an URL that you need to visit to generate at least once (that's why you have the offline access in your code and the auto prompt) 

2) Используйте следующий сценарий, и адаптировать его к вашим настройкам. https://developers.google.com/drive/web/credentials

3) Сохраните жетоны или учетные данные, которые они вам предоставили, используйте токен обновления в вашем скрипте php, который нуждается в cronjob, и он должен получить разрешение, если есть refreshtoken.

Надеюсь, что это поможет. Если у вас есть дополнительные вопросы, я могу попытаться ответить на них, поскольку я разрабатываю аналогичный сценарий.