我發現這個問題很多次,但我找不到解決方案的單個實例,所以我正在嘗試自己。通過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的一種方式 - 在此之前我幾乎沒有什麼經驗 - 並且至少想知道登錄錯誤來自哪裏,以及我如何在掉落之前克服它回到現有的快捷方式。因爲這不是必要的項目,所以我有時間陪伴在我身邊。這只是我試圖幫助的東西。
任何人都可以向我解釋我做錯了什麼,或者我需要分享什麼進一步的信息來隔離問題?我不想錯過這個學習的機會!
謝謝!
WOW殭屍的問題! :)答覆接受@Eddwinpaz - 感謝您的時間。我可以用更多的研究來解決這個問題。僅供參考 - Google提供的PHP API與我的應用程序不兼容,因爲我需要它以「自動」方式登錄 - 我的用戶在技術上不夠專業,無法在手機上處理UN/PW對話框。 – Alex 2014-02-22 17:07:59