LoginSignup
11
12

More than 5 years have passed since last update.

Yahoo WEB APIをバッチ処理から実行したい

Last updated at Posted at 2015-02-18

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スキームを指定した場合、どのように認証処理を行えば良いか記載がなく、ご相談させて頂きました。

以上よろしくお願い申し上げます。

11
12
14

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12