Yahoo!デベロッパーネットワーク ご担当者様
お世話になります。
御社ショッピングモールへ出店するための準備をしております。
既に他ショッピングモールに出店しており、御社ショッピングモールとの自動在庫連動を考えております。
想定している処理は、在庫連動用スクリプト(php)をLinux上からcronで定期的に稼働させるバッチ処理です。
御社在庫更新用APIを確認したところ、YahooID連携用のAPIとなっておりました。当店では自社の在庫連動のみを想定しており、WEBサービスとして公開する予定は御座いません。そのため、自ユーザーのみのアクセスになります。
API実行時、アクセストークンが必要になるようなので、クライアントアプリとしてアプリケーション登録致しました。
御社ドキュメントを確認したところ、バッチ処理として実行する場合はimplicitとして実行するようなので、Authorizationエンドポイントの以下仕様を元に簡単なスクリプトを作り、接続テストを行ってみました。
http://developer.yahoo.co.jp/yconnect/client_app/implicit/authorization.html
スクリプトは以下の通りです。
<?php
/**
*アクセストークン取得テスト用(GET)
*
*/
$api = 'https://auth.login.yahoo.co.jp/yconnect/v1/authorization';
$appid = 'アプリケーションID';
$params = array(
'response_type' => 'token',
'client_id' => $appid,
'redirect_uri' => 'カスタムURIスキーム',
);
$header = array(
'Content-Type: application/x-www-form-urlencoded; charset=utf-8'
);
$ch = curl_init($api.'?'.http_build_query($params));
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 'true',
CURLOPT_HTTPHEADER => $header,
CURLOPT_HEADER => 'true'
));
$result = curl_exec($ch);
curl_close($ch);
print $result;
?>
実行したところ、スクリプトに誤りがあるのか$resultには"1"とのみ格納されておりました。こちらエラーコード、もしくはstate値でしょうか?
アプリケーションIDやredirect_uriの値が違う場合は「redirect_uri is invalid.」等のエラー画面が出力されますので、接続はできていると思われます。
引っ掛かっているのは、「ユーザーが同意完了後の挙動」としてレスポンスパラメーターが返る仕様のようですので、redirect_uriで指定されたURIで認証を行わないとアクセストークンが戻らないではないかという点です。
クライアントアプリとして登録した際、カスタムURIスキームに値が入っており、そちらの値をredirect_uriに指定致しましたが、仕様書を見た限りではカスタムURIスキームを指定した場合、どのように認証処理を行えば良いか記載がなく、ご相談させて頂きました。
以上よろしくお願い申し上げます。