2016-10-03 28 views
1

GoogleカレンダーAPIを何年も使って、大成功を収めています。私はカールを使用してPHPからのリクエストを使用します。Google Contacts API PHPカールの連絡先を取得する

私は連絡先APIでこれを達成しようとしています。現時点では、私はOAuth2を通じてトークンを取得したユーザのjsonという連絡先リストを取得します。私はテストのために以下の単純なコードを使用しています。

$accessToken = "thebiglongaccesstoken1234"; 
$userMail = "[email protected]"; 
$requestURL ="https://www.google.com/m8/feeds/contacts/".$userMail."/full?v=3.0&alt=json"; 
$headers = array("Authorization: OAuth ".$accessToken); 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_URL, $requestURL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$response = curl_exec($ch); 
$responseArray = json_decode($response, TRUE); 

var_dump($responseArray); 
print '<br/>Response: <pre>' . print_r($responseArray, true) . '</pre>'; 
print 'curl Error: <pre>' . print_r(curl_error($ch), true) . '</pre>'; 

ブラウザで応答は次のとおりです。

NULL 応答: カールエラー:

私はこの要求をGoogleのOAuth 2.0プレイグラウンドで動作するように取得することができます。

最終的に私が望むのは、電子メールアドレスでユーザーの連絡先を検索して電話番号を取得するだけなので、ライブラリを使用したくありません。カレンダー用の関数ライブラリを作成しましたので、余分なものを追加したくありません。数行のコードしか必要ありません。

私はそれをあまりにも長く見過ごしてしまったと思います。どんな助けもありがたい。

UPDATE:

Iは(c​​url_getinfoを使用してこれを持っ)

アレイ ( [URL] =>https://www.google.com/m8/feeds/contacts/[email protected]/full?v=3.0&alt=json [CONTENT_TYPE] =>テキスト/ HTML;のcharset = UTF-8 [HTTP_CODE => 401 [ヘッダサイズ] => 457 [request_size] => 208 [FILETIME] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [TOTAL_TIME] => 0.1244 [namelookup_time] => 0.000837 [CONNECT_TIME] => 0.00306 [pretransfer_time] => 0.015428 [size_upload] => 0 [size_download] => 11875 [speed_download] => 95458 [speed_upload] => 0 【download_content_length] => -1 [upload_content_length] => 0 [starttransfer_time] => 0.123992 [redirect_time] => 0 [certinfoを] =>配列 ( )

+0

出力を 'json_decode'に渡す前に出力できますか?連絡先APIは、一般的にプレーンテキストのエラーを返します。また、応答ステータスコードも役立ちます。 –

+0

$ responseを使って何かをしようとすると、それを印刷するかvar_dumpを実行すると、401or 404のエラーメッセージと「リクエストにエラーがありました。それはすべてわかっています。 var_dump on curlエラーは、空の文字列を示します。 –

答えて

2

それが401であることを見て、私はあなたの認証ヘッダが間違っていることに気付きました。承認ヘッダーを"Authorization: OAuth " . $accessTokenの代わりに"Authorization: Bearer " . $accessTokenに変更します。

まだ401を取得している場合は、新しいアクセストークンを取得する必要があります。

+0

答えをありがとう。それでも同じことを試してみました。これらのイライラした問題のひとつ。 –

関連する問題