1

ユーザーがすべての Google コンタクトの名前とプロフィール写真を 1 つの長いリストで表示できるようにするサイトを PHP でコーディングしています。その後、ユーザーは新しい写真をドラッグ アンド ドロップして、既存のプロフィール写真を置き換えることができます。

しかし、写真を更新しようとすると 401 (不正アクセス) エラーが発生します。

https://www.google.com/m8/feeds/photos/media/default/6f2?access_token=ya29.AHES6ZR_ZS7_u-8TbMOMaeaGW9q4F7tkuPxW6gFTulyBXなどの GET リクエストで機能するため、access_token が正しいことはわかっています。

ドキュメントはあまり役に立ちませんでした。これらおよびこれらも参照してください。

私のコードは次のようになります。

#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: Bearer'行を次のように置き換えるなどのバリエーションも試しましたAuthorization: GoogleLogin auth=ya29.AHES6ZR_ZS7_u-8TbMOMaeaGW9q4F7tkuPxW6gFTulyBX

ご協力いただきありがとうございます。

4

1 に答える 1

1

うまくいったなんて信じられませんが、変更image/*するとimage/jpg401エラーの問題が修正されました。

この投稿は私をひっくり返しました。)

また、参考までに、私はまだ使用してい$requestHeaders[]='Authorization: Bearer '. $access_token;ます$requestHeaders[]='Authorization: GoogleLogin auth='. $access_token;

于 2011-11-20T18:33:32.563 に答える