Я использую клиент API Google для чтения писем из Gmail. Теперь я хочу добавить Cronjob, чтобы он каждые 5 минут читал письма.Google API Client и Cronjob
Проблема с использованием Клиента Google API заключается в том, что он должен позволить пользователю сначала щелкнуть ссылку авторизации и разрешить пользователю использовать Клиента API Google.
У меня есть класс Inbox с функцией инициализации, которая инициализирует клиента API Google. Но cronjob не работает, потому что мне нужно получить access_token.
public function initialize() {
$configuration = Configuration::getConfiguration('class_Inbox');
// Creates the Google Client
$this->client = new Google_Client();
$this->client->setApplicationName('Tiptsernetwork');
$this->client->setClientId($configuration['clientId']);
$this->client->setClientSecret($configuration['clientSecret']);
$this->client->setRedirectUri('http://www.tipsternetwork.nl/cronjob/authenticate');
$this->client->addScope('https://mail.google.com/');
$this->client->setApprovalPrompt('force');
$this->client->setAccessType('offline');
// Creates the Google Gmail Service
$this->service = new Google_Service_Gmail($this->client);
// Authenticates the user.
if (isset($_GET['code'])) {
$this->authenticate($_GET['code']);
}
// Check if we have an access token in the session
if (isset($_SESSION['access_token'])) {
$this->client->setAccessToken($_SESSION['access_token']);
} else {
$loginUrl = $this->client->createAuthUrl();
echo '<a href="'.$loginUrl.'">Click Here</a>';
}
// If the token is expired it used the refresh token to generate a new Access Token
if($this->client->isAccessTokenExpired()) {
$this->client->refreshToken($configuration['refreshToken']);
}
}
public function authenticate($code) {
// Creates and sets the Google Authorization Code
$this->client->authenticate($code);
$_SESSION['access_token'] = $this->client->getAccessToken();
$this->client->refreshToken($configuration['refreshToken']);
// Redirect the user back after authorizaton
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($url, FILTER_VALIDATE_URL));
}
Вы, ребята, знаете, как исправить это, используя токен обновления или что-то еще? Я не могу заставить его работать, и у меня нет идей.
Если я получить доступ к URL и нажмите на «Нажмите здесь» и позволяют это работает успешно, но не с Cronjob, потому что я не могу нажать на «Нажмите здесь» URL ...
Я надеюсь, вы, люди, понимаете это и можете мне помочь :).
С наилучшими пожеланиями,
Яник