Sto utilizzando il client API di Google per leggere le email da Gmail. Ora voglio aggiungere un cronjob in modo che legga ogni 5 minuti le mail.Client API Google e Cronjob
Il problema che si verifica utilizzando il client dell'API di Google è che deve consentire all'utente di fare prima clic sul collegamento di autorizzazione e consentire all'utente di utilizzare il client dell'API di Google.
Ho una casella di posta di classe con una funzione di inizializzazione che avvia il client dell'API di Google. Ma il cronjob non funziona perché devo ottenere un 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));
}
Ragazzi sapete come risolverlo utilizzando il token di aggiornamento o qualsiasi altra cosa? Non riesco a farlo funzionare e sono fuori di idee.
Se io sono l'accesso l'URL e cliccare su "Clicca qui" e permettere che funziona con successo, ma non con un cronjob perché non posso cliccare sull'URL "clicca qui" ...
spero voi lo capite e potete aiutarmi :).
Cordiali saluti,
Yanick