2012-07-09 34 views
1

我發現這個問題很多次,但我找不到解決方案的單個實例,所以我正在嘗試自己。通過PHP cURL創建Google日曆事件時的「需要登錄」?

我正在創建一個簡單的Web應用程序來幫助我的僱主將事件安排到Google日曆。我創建了日曆,使用Google API註冊,並編寫了cURL函數來檢查現有約會和返回時間&日期。我掛上了創建新事件的功能。我已經寫了(爲了清楚起見,擴大一些變量名)的功能如下:

function post_cal($url, $header, $post_content) 
{ 
    global $authtoken, $curlDefaults; 
    $request = $url; 
    $headers = array('Content-Type: application/json; Authorization: OAuth ' . $authtoken . $header); 
    $options = array (
     CURLOPT_URL => $request, 
     CURLOPT_HTTPHEADER => $headers, 
     CURLOPT_POST => 1, 
     CURLOPT_POSTFIELDS => $post_content, 
    ); 
    $ch = curl_init(); 
    curl_setopt_array($ch, ($curlDefaults + $options)); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    $json = json_decode($result, true); 
    return $json; 
} 

我得到一個「401 - 需要登錄」錯誤對象,當我嘗試運行,像這樣的post_cal功能:

$scheduled = post_cal('https://www.googleapis.com/calendar/v3/calendars/xxxxxx/events, '', $apptInfo); 

cURL函數幾乎與我已經具備的讀取事件的函數相同&返回現有值 - 兩者都可以正常工作!我使用相同的$ authtoken變量,通過顯式定義的「https://www.googleapis.com/auth/calendar」作用域通過刷新令牌收集。我已閱讀並重新閱讀Google OAuth文檔,但似乎無法準確找到此錯誤來自哪裏。

$ apptInfo是一個數組,編碼爲JSON,包含約會信息,幷包含開始&結束時間,摘要和說明。

我知道使用Google提供的PHP庫或Zend/GData框架可以更輕鬆地完成此操作。然而,我正在使用這個項目作爲自學PHP的一種方式 - 在此之前我幾乎沒有什麼經驗 - 並且至少想知道登錄錯誤來自哪裏,以及我如何在掉落之前克服它回到現有的快捷方式。因爲這不是必要的項目,所以我有時間陪伴在我身邊。這只是我試圖幫助的東西。

任何人都可以向我解釋我做錯了什麼,或者我需要分享什麼進一步的信息來隔離問題?我不想錯過這個學習的機會!

謝謝!

回答

0

使用螢火蟲,你可以準確地看到你正在發送的標題。我想是一個調試問題,因爲所有似乎都很好。但我建議使用谷歌的PHP API SDK。

$events = $service->events->listEvents('primary'); 

while(true) { 
    foreach ($events->getItems() as $event) { 
    echo $event->getSummary(); 
} 
$pageToken = $events->getNextPageToken(); 
    if ($pageToken) { 
    $optParams = array('pageToken' => $pageToken); 
    $events = $service->events->listEvents('primary', $optParams); 
} else { 
    break; 
} 
} 

https://developers.google.com/google-apps/calendar/v3/reference/events/list

+0

WOW殭屍的問題! :)答覆接受@Eddwinpaz - 感謝您的時間。我可以用更多的研究來解決這個問題。僅供參考 - Google提供的PHP API與我的應用程序不兼容,因爲我需要它以「自動」方式登錄 - 我的用戶在技術上不夠專業,無法在手機上處理UN/PW對話框。 – Alex 2014-02-22 17:07:59