2011-11-19 77 views
1

我在PHP中編寫了一個站點,它允許用戶在一個長列表中查看他所有的Google聯繫人的姓名和個人資料照片。然後,用戶可以拖放新照片來替換現有的個人資料照片。如何通過PHP更新Google聯繫人的照片?

但是,試圖更新照片時出現401(未授權訪問)錯誤。

我知道是的access_token正確的,因爲它在GET請求,如https://www.google.com/m8/feeds/photos/media/default/6f2?access_token=ya29.AHES6ZR_ZS7_u-8TbMOMaeaGW9q4F7tkuPxW6gFTulyBX

docs工作並沒有太大的幫助。另見thesethese

我的代碼看起來是這樣的:

#the stuff that i echo out is just for debugging purposes 
$apiVersion='3.0'; 
$access_token = $this->session->userdata('googleauth_access_token'); 

$url = 'https://www.google.com/m8/feeds/photos/media/default/' . $contactID; 
$fp = fopen($image_location, "r"); 
$filesize = filesize($image_location); 
echo '<img src="https://www.google.com/m8/feeds/photos/media/default/'. $contactID. '?access_token=' . $access_token.'"/><br/>';  
echo $image_location; 
echo $filesize; 
echo $url; 
$requestHeaders=array('Content-type: image/*','If-Match: '.$eTag,'GData-Version: '.$apiVersion); 
$requestHeaders[]='Authorization: Bearer '. $access_token; 
print_r($requestHeaders); 
$c = curl_init(); 
curl_setopt($c, CURLOPT_URL, $url); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($c, CURLOPT_PUT, true); 
curl_setopt($c, CURLOPT_INFILESIZE, $filesize); 
curl_setopt($c, CURLOPT_INFILE, $fp); 
curl_setopt($c, CURLOPT_VERBOSE, true); 
curl_setopt($c, CURLOPT_HTTPHEADER, $requestHeaders); 
$result = curl_exec($c);  
$curlGetInfo=curl_getinfo($c); 
print_r($curlGetInfo); 
curl_close($c); 
fclose($fp); 
echo $result; 

我也試圖變體,如與Authorization: GoogleLogin auth=ya29.AHES6ZR_ZS7_u-8TbMOMaeaGW9q4F7tkuPxW6gFTulyBX

感謝您的幫助更換'Authorization: Bearer'線。

回答

1

我不敢相信它的工作,但更改image/*image/jpg修復了401錯誤問題。

This post放倒我。)

而且通知你,我仍然使用$requestHeaders[]='Authorization: Bearer '. $access_token;而不是$requestHeaders[]='Authorization: GoogleLogin auth='. $access_token;