PHPでYahooショッピングと連携するシステムを実現しようと考えています。
Yahooショッピングには、WebAPIがあり、ほかのシステムと連携できるようです。
YahooAPIを利用する際に必要なアクセストークンを取得する機能を実装中に以下のエラーメッセージが発生し、アクセストークンを取得できません。
発生している問題・エラーメッセージ
HTTP/1.1 400 Bad Request : error:invalid_request, error_description: the parameter is invalid. [client_id], error_code: 102
該当のソースコード
PHP
1<?php 2 3$code = $_GET['code']; 4$state = $_GET['state']; 5 6if (!empty($code)) { 7 echo 'code = ' . $code . "\n"; 8 9 getAccessToken($code); 10} 11 12exit(); 13 14 15function getAccessToken($code) { 16 17 $applicationId = <アクセストークン>; 18 $secret = <シークレット>; 19 20 $basicAuth = base64_encode($applicationId . ':' . $secret); 21 22 $header = [ 23 "Authorization: Basic " . $basicAuth 24 ]; 25 26 $url = "https://auth.login.yahoo.co.jp/yconnect/v1/token"; 27 28 $postData = [ 29 'grant_type' => 'authorization_code', 30 'code' => $code, 31 'client_id' => $applicationId, 32 'redirect_uri' => <リダイレクトURL> 33 ]; 34 35 // echo http_build_query($postData); 36 37 $ch = curl_init(); 38 39 curl_setopt($ch, CURLOPT_URL, $url); 40 curl_setopt($ch, CURLOPT_HEADER, true); 41 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 42 curl_setopt($ch, CURLOPT_POST, true); 43 curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 44 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 45 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 46 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 47 48 $response = curl_exec($ch); 49 50 if(curl_error($ch)){ 51 $response = curl_error($ch); 52 } 53 54 $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 55 56 curl_close($ch); 57 58 echo $response; 59} 60
試したこと
AuthorizationヘッダをCURLのものに変更しようとして、以下のようにオプションを追加してもだめでした。
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, $applicationId . ":" . $secret);
POSTデータをhttp_build_queryしてもだめでした。
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
補足情報(FW/ツールのバージョンなど)
YahooのAPIはv1で、PHPのバージョンは、7.2です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/10 05:35