我正在嘗試製作一些腳本,它會自動添加來自Joomla的事件將新頁面添加到Google日曆中。我用這個代碼做了它,它甚至可以工作,但只有很短的時間。Google api長時間授權
我可能會誤解,Google授權是如何工作的。首先,我必須授權腳本使用該日曆等。我做了一次,但一小時後我不得不再做一次。我想永久授權或至少一年(超過一小時)。我甚至不能在保存過程中對它進行授權,因爲它在保存腳本時會自動重定向到帖子管理。
還有一件事要提到:有一個重定向uri,我把它設置在管理頁面的index.php上。不知道它是一個問題,但它不應該是因爲新聞被添加在index.php中......所以它仍然是一個頁面。
但這一切都工作了一個小時(或周圍的東西),所以我認爲這個問題不是重定向uri。 THX
這裏是我的代碼(由一些谷歌的API,例如網頁粘貼複印件):
require_once "google-api-php-client/src/Google_Client.php";
require_once "google-api-phpclient/src/contrib/Google_CalendarService.php";
session_start();
$client = new Google_Client();
$client->setApplicationName("Add Google Calendar Entries");
$client->setClientId('####');
$client->setClientSecret('####');
$client->setRedirectUri('####');
$client->setDeveloperKey('####');
$cal = new Google_CalendarService($client);
if (isset($_GET['logout'])) {
unset($_SESSION['token']);
}
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
if ($client->getAccessToken()) {
$calList = $cal->calendarList->listCalendarList();
$_SESSION['token'] = $client->getAccessToken();
$event = new Google_Event();
// some calendar adding stuff
} else {
$authUrl = $client->createAuthUrl();
print "<a class='login' href='$authUrl'>Authorize!</a>";
}
// Google Calendar API END
}
只是概括地說:我希望我的授權工作更長的時間,也許有在我的代碼或錯誤在我的理解如何工作。
機器上PHP會話的生命期是多久? (請注意:您可能要考慮使用最新版本的Google API:https://github.com/google/google-api-php-client) – Plenka
這不是它的工作方式,您需要重新授權在令牌到期後。您可能想嘗試在Joomla中使用/擴展JGoogle Api,因爲它可以爲您管理OAuth。 – Elin