2016-05-28 24 views
0

私は、Fitbit oauth 2.0 APIへのリクエストを行うためにphpとcURLを使用しようとしています。私は認可コードを得ることができますが、トークンのコードを交換することはできません。 FitbitのAPIドキュメント(https://dev.fitbit.com/docs/oauth2/#access-token-request)では、コード、クライアントID、リダイレクトuri、認可タイプを 'authorization_code'に設定する必要があると言います。PHP cURL許可タイプが無効/未サポート

どのように私は応答を印刷するとエラーが発生します。

"ERRORTYPE": "unsupported_grant_type"、 "メッセージ": "承認grant_typeはサポートされていませんFitbitのWeb APIの承認プロセスの詳細については、https://dev.fitbit.com/docs/oauth2をご覧ください。。"}]、 "成功":偽}

私の人生にとって私は以下のコードで間違っていることを解決できません。助言がありますか?

$code = $_GET['code']; 
$url = 'https://api.fitbit.com/oauth2/token'; 

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
'code=' . $code . '&' . 
'client_id=' . $oauth2_client_id . '&' . 
'redirect_uri=' . $oauth2_redirect . '&' . 
'grant_type=authorization_code' 
              ) 
); 

curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Authorization: Basic '. base64_encode($oauth2_client_id.':'.$oauth2_secret), 
    'Content-Type: application/x-www-form-urlencoded' 
)); 
$response = curl_exec($curl); 
print_r($response); 

答えて

0

あなたは、単一の文字列にしてPOSTの引数を連結し、その後、アレイに含めるが、それらが個別に提示すべきです。それは以下のように行うことができます。

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query(array(
'code' => $code, 
'client_id' => $oauth2_client_id, 
'redirect_uri' => $oauth2_redirect, 
'grant_type' => 'authorization_code' 
))); 

参照:curl POST format for CURLOPT_POSTFIELDS

+0

はい、ありがとうございました!何らかの理由で、あなたが指定した通りにそれらを適切な配列に入れても、うまくいきませんでした。しかし、配列としてではなく、単一の文字列を使用すると、完全に機能しました! –

関連する問題