2012-09-13 141 views
1

我的問題非常簡單,我使用的是帶有PHP腳本的Google Calendar API。Google Calendar API授權始終詢問

我的腳本正在運行,但無法使用cron運行它,因爲我需要始終授權我的應用程序。

有沒有辦法做我想要的?

這裏是我的代碼:

<?php 
require_once 'google/Google_Client.php'; 
require_once 'google/contrib/Google_CalendarService.php'; 
session_start(); 


$client = new Google_Client(); 
$client->setApplicationName("Google Calendar PHP Starter Application"); 
$client->setClientId([MY APP ID]); 
$client->setClientSecret([MY SECRET TOKEN]); 
$client->setRedirectUri([MY REDIRECT URI]); 
$client->setDeveloperKey([MY DEV KEY]); 
$cal = new Google_CalendarService($client); 
if (isset($_GET['logout'])) { 
    unset($_SESSION['token']); 
} 

/* 
** Request token from API 
*/ 
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()) { 


    // MY CODE GOES HERE 


    } else { 

    $authUrl = $client->createAuthUrl(); 
    print "<a class='login' href='$authUrl'>Connect Me!</a>"; 
} 


?> 

謝謝!

回答

0

不知道你是否有這個問題的答案,但我有同樣的問題一次。 Google Api會返回一個Oauth訪問令牌。該令牌無限期地持續,但在您的代碼中,您將其存儲在$ _SESSION變量中,該變量具有保留的時間跨度。嘗試使用$token = $client->getAccessToken();以將訪問令牌放入變量中,然後以其他某種形式(如數據庫)存儲該令牌。然後,在檢查$_SESSION['token']是否已設置時,如果不是,則可以查詢數據庫以檢索令牌並使用$client->setAccessToken($queryResult);只要您擁有該訪問令牌,API就會處理剩下的部分。