OAuth1.0

エンドポイント仕様

1. リクエストトークン取得エンドポイント

URL: https://auth.login.yahoo.co.jp/oauth/v2/get_request_token

サポートする HTTP メソッド: GET、POST

未認可のリクエストトークンを取得します。リクエストトークンはEnd Userが同意したかどうかを確認するための一時的に使用するトークンです。
End Userのデータに対してConsumerがアクセスすることに関する注意事項にEnd Userが同意をすると、リクエストトークンは認可済みの状態になります。

リクエストパラメーター

リクエストの生成方法については、OAuthにおけるリクエスト方法を参照してください。

パラメーター 説明
oauth_consumer_key アプリケーション登録時に発行したConsumer Keyを指定してください。
oauth_signature_method HMAC-SHA1を指定してください。
oauth_signature oauth_signature_methodで指定した署名方式に応じた署名の文字列を指定してください。署名の生成方法はリクエストの署名方法を参照してください。
oauth_timestamp リクエスト作成時のタイムスタンプ値を指定してください。タイムスタンプを生成して600秒以上たったリクエストは無効になります。
oauth_nonce リクエストごとにランダムな文字列を指定してください。
oauth_version 1.0を指定してください。
oauth_callback End Userが同意後に遷移するConsumerへの戻り先URLを指定してください。アプリケーション登録時に設定したドメインかつ80/443番ポートのURLのみ指定可能です。Consumerがクライアントアプリケーションの場合などで戻り先URLがない場合は'oob'を指定してください。

サンプルリクエストURL

https://auth.login.yahoo.co.jp/oauth/v2/get_request_token?oauth_consumer_key=dj0yJmk9UjI2WmVET25uRk9XJnM9Y29uc3VtZXJzZWNyZXQmeD1hZA--
&oauth_nonce=ef3a091928d5491624c0ac54d697124422705091
&oauth_signature_method=HMAC-SHA1
&oauth_signature=5f78507cf0acc38890cf5aa697210822e90c8b1c%26
&oauth_timestamp=1202956957
&oauth_version=1.0
&oauth_callback=http%3A%2F%2Fyoursite.com%2Fcallback

レスポンスパラメーター

パラメーター 説明
oauth_token リクエストトークン。7桁の小文字の英数字により構成されています。
oauth_token_secret Consumer Secret。16進の文字列により構成されています。
oauth_callback_confirmed callback値が確認済みであることをConsumerに通知するための値です。常にtrueが返されます。
oauth_expires_in リクエストトークンの有効期限の秒数。デフォルト値は3600です。
xoauth_request_auth_url ユーザーにリダイレクトさせるリクエストURL。

サンプルレスポンス

oauth_token=kb57bce
&oauth_token_secret=dd8e49940182a708a36010c2e8f93663bae4d893
&oauth_expires_in=3600
&xoauth_request_auth_url=https%3A%2F%2Fauth.login.yahoo.co.jp%2Foauth%2Fv2%2Frequest_auth%3Foauth_token%3Dkb57bce
&oauth_callback_confirmed=true

エラーレスポンス

リクエスト中のパラメーターが不足、もしくは不正な値が指定されている場合は以下のレスポンスが返却されます。

ステータスコード 401
oauth_problem=consumer_key_unknown
  • 不正なoauth_consumer_keyです。正しいConsumer Keyを指定してください。
oauth_problem=callback_invalid
  • 不正なConsumerへの戻り先URLです。正しい戻り先URL、ポート(80/443番)を指定してください。
oauth_problem=timestamp_refused&oauth_acceptable_timestamps=1321404709-1321405909
  • 不正なoauth_timestampです。リクエストパラメータ生成から10分以上経過しているので、新しいリクエストを生成してやり直してください。
oauth_problem=version_rejected&oauth_acceptable_versions=1.0
  • Yahoo! JAPANのOAuthがサポートしていないoauth_versionです。1.0を指定してください。
oauth_problem=signature_method_rejected
  • Yahoo! JAPANのOAuthがサポートしていないoauth_signature_methodです。HMAC-SHA1を指定してください。
oauth_problem=signature_invalid
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_consumer_key
  • Consumer Keyが指定されていません。アプリケーション登録時に発行したConsumer Keyを指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_callback
  • 戻り先URLが指定されていません。正しい戻り先URL、または戻り先URLがない場合は'oob'を指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_timestamp
  • タイムスタンプ値が指定されていません。リクエスト作成時のタイムスタンプ値を指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_signature_method
  • 署名方式が指定されていません。HMAC-SHA1を指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_signature
  • 署名の文字列が指定されていません。oauth_signature_methodで指定した署名方式に応じた署名の文字列を指定してください。
oauth_problem=consumer_key_rejected
  • ユーザー認証が不要なoauth_consumer_keyです。認証を行わずにAPIのアクセスを行ってください。
ステータスコード 503
  • Yahoo! JAPANのOAuthの負荷が一時的に高くなっています。


2. End User認可リクエストエンドポイント

URL: https://auth.login.yahoo.co.jp/oauth/v2/request_auth

サポートする HTTP メソッド: GET

ConsumerがEnd UserをYahoo! JAPANの同意画面へリダイレクトさせ、注意事項への同意をさせることで認可を得るためのエンドポイントです。リクエストトークン取得エンドポイントで指定したoauth_callbackの値に応じて、End Userの同意後の処理が分岐します。

リクエストパラメーター

リクエストの生成方法については、OAuthにおけるリクエスト方法を参照してください。

パラメーター 説明
oauth_token リクエストトークンの値。get_request_tokenのレスポンスに含まれるoauth_tokenを指定する。
xoauth_yahoo_mobile (オプション)フィーチャーフォン向けの同意画面を表示するフラグ。フィーチャーフォンからアクセスする場合は1を指定してください。

End Userへのリダイレクト指示

パソコンやスマートフォン向けの画面を表示させる場合

HTTP/1.1 302 Found
Location: https://auth.login.yahoo.co.jp/oauth/v2/request_auth?oauth_token=k5nyp6d

フィーチャーフォン向けの画面を表示させる場合

HTTP/1.1 302 Found
Location: https://auth.login.yahoo.co.jp/oauth/v2/request_auth?oauth_token=k5nyp6d&xoauth_yahoo_mobile=1

End Userが同意完了後の挙動

  • リクエストトークン取得時のoauth_callbackにURLを指定した場合
    • oauth_callbackに指定した戻り先URLに下記パラメーターを付加してEnd Userをリダイレクトさせます。
      パラメーター 説明
      oauth_token 認可済みのリクエストトークン。リクエスト時に指定したoauth_tokenと同一のものです。
      oauth_verifier OAuth Verifierと呼ばれる確認用コード。6桁の小文字の英数字により構成されています。
  • リクエストトークン取得時のoauth_callbackに'oob'を指定した場合
    • End Userの同意完了画面上に6桁の確認コード(oauth_verifier)を表示します。
    • End Userは戻り先となるConsumerのアプリケーションにこの確認コードを入力する必要があります。


3. アクセストークン取得エンドポイント

URL: https://auth.login.yahoo.co.jp/oauth/v2/get_token

サポートする HTTP メソッド: GET、POST

Web APIにアクセスするのに必要なアクセストークン、アクセストークン更新用のセッションハンドル、およびユーザー識別子を返却します。

リクエストパラメーター

リクエストの生成方法については、OAuthにおけるリクエスト方法を参照してください。

パラメーター 説明
oauth_consumer_key アプリケーション登録時に発行したConsumer Keyを指定してください。
oauth_token 認可済みのリクエストトークンを指定してください。
oauth_signature_method HMAC-SHA1を指定してください。
oauth_signature oauth_signature_methodで指定した署名方式に応じた署名の文字列を指定してください。署名の生成方法はリクエストの署名方法を参照してください。
oauth_timestamp リクエスト作成時のタイムスタンプ値を指定してください。タイムスタンプを生成して600秒以上たったリクエストは無効になります。
oauth_nonce リクエストごとにランダムな文字列を指定してください。
oauth_verifier 確認コード(OAuth Verifier)を指定してください。
oauth_version 1.0を指定してください。

サンプルリクエストURL

https://auth.login.yahoo.co.jp/oauth/v2/get_token?oauth_consumer_key=dj0yJmk9UjI2WmVET25uRk9XJnM9Y29uc3VtZXJzZWNyZXQmeD1hZA--
&oauth_version=1.0
&oauth_nonce=ef3a091928d5491624c0ac54d697124422705091
&oauth_token=k6fgaeq
&oauth_signature_method=HMAC-SHA1
&oauth_signature=5f78507cf0acc38890cf5aa697210822e90c8b1c%261fa61b464613d0d32de80089fe099caf34c9dac5
&oauth_timestamp=1228169662
&oauth_verifier=svmhhd

レスポンスパラメーター

リクエストの生成方法については、OAuthにおけるリクエスト方法を参照してください。

パラメーター 説明
oauth_token アクセストークン。APIへアクセスするのに使用します。
oauth_token_secret アクセストークンのSecret値。16進の文字列により構成されています。
oauth_session_handle セッションハンドル。End Userが認可していることを表すトークンで、有効期限が切れたアクセストークンを更新するときに使用します。
oauth_expires_in アクセストークンの有効期間を表す秒数。通常は3600(1時間)です。
oauth_authorization_expires_in セッションハンドルの有効期間を表す秒数。通常は1209600(2週間)です。
xoauth_yahoo_guid End Userのユーザー識別子。

サンプルレスポンス

oauth_token=A%3DqVDHXBngo1tEtzox.JMhzd91Rk99.39Al7hos3J80mm1j_3nGP4BiilL777vUj2rsPLj1cZw.srbisvw.cz42Lzmlxt
H0Kk9mkXilvS1ll5lNoMKXO5zy5YG4vO3fbGKewp7IESYMIdEi4Md7SroYiv6kBCEjqB4jXr0.8XsMvOlQgZ.aKNKXwc2sv3n4BOZxs
54tzXV6rGNpEHZUaj9CovPUo44isTgs9FnLIKpXFCU4Jq1BB3_IOTFBNf1vtf5vSxaxe_L5dUhr.i15Hx0LTZ2tlsWeDcActSGGBWVc
vytPF3cK9mDWy44baBgCVI3AEbGCqg.NGhDPqOh1ZHfKFtYlBZfG4xf2n..CdxcM5x4INxnVz2.biMkfhfkw8haJuR0RaUY37lBxZ9z
3e.TlH0zdjaDjxh2tCoZQiHWPMe8HMv5LFYPZvsMp3tkG5u_QM9ymtn8jG.nDvEDA0rhBoODWguLW5079nD7RoezDxr.2b76jz7P4jY
d2k8BsZbBF6Y7V2nl.Gx9Sw5HVXa3cRWFBevCqUBPc5Tod4Cy1lLnTbxTYCpLYethRWERjX43C.td4VFqMkr3.TSZCc9UtsOeb2Ulr1
h.E8bRwPoXV9eq4vAtNX_8KVca9qcIJtvVV8kc3J6nZXWQyoLhQ5YYrtY33bT0COPBexk-
&oauth_token_secret=c5a9684d3a3aa22aa051308987219efb8d6982fc
&oauth_session_handle=AKVdNElJthnrHDwnYDuj6fJ2ayRbJvkePz9AKwi9dQAfb4bd
&oauth_expires_in=3600
&oauth_authorization_expires_in=919314350
&xoauth_yahoo_guid=DKXSX6Q5TA5SVNARZLUJU5AW7A

エラーレスポンス

リクエスト中のパラメーターが不足、もしくは不正な値が指定されている場合は以下のレスポンスが返却されます。

ステータスコード 401
oauth_problem=token_rejected
  • 有効期限が過ぎた、もしくは不正なoauth_tokenです。有効なリクエストトークンを指定してください。
oauth_problem=consumer_key_unknown
  • 不正なConsumerへの戻り先URLです。正しい戻り先URL、ポート(80/443番)を指定してください。
oauth_problem=oauth_verifier_invalid
  • 不正なOAuth Verifierです。正しい確認コードを指定してください。
oauth_problem=timestamp_refused&oauth_acceptable_timestamps=1321408579-1321409779
  • 不正なoauth_timestampです。リクエストパラメーター生成から10分以上経過しているので、新しいリクエストを生成してやり直してください。
oauth_problem=version_rejected&oauth_acceptable_versions=1.0
  • Yahoo! JAPANのOAuthがサポートしていないoauth_versionです。1.0を指定してください。
oauth_problem=signature_method_rejected
  • Yahoo! JAPANのOAuthがサポートしていないoauth_signature_methodです。HMAC-SHA1を指定してください。
oauth_problem=signature_invalid
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_token
  • リクエストトークンが指定されていません。認可済みのリクエストトークンを指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_consumer_key
  • Consumer Keyが指定されていません。アプリケーション登録時に発行したConsumer Keyを指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_verifier
  • OAuth Verifierが指定されていません。確認コードを指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_timestamp
  • タイムスタンプ値が指定されていません。リクエスト作成時のタイムスタンプ値を指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_signature_method
  • 署名方式が指定されていません。HMAC-SHA1を指定してください。
oauth_problem=parameter_absent&oauth_parameters_absent=oauth_signature
  • 署名の文字列が指定されていません。oauth_signature_methodで指定した署名方式に応じた署名の文字列を指定してください。
oauth_problem=consumer_key_rejected
  • ユーザー認証が不要なoauth_consumer_keyです。認証を行わずにAPIのアクセスを行ってください。
ステータスコード 503
  • Yahoo! JAPANのOAuthの負荷が一時的に高くなっています。


アクセストークン更新エンドポイント

URL: https://auth.login.yahoo.co.jp/oauth/v2/get_token

サポートする HTTP メソッド: GET、POST

新しくアクセストークンを取得するエンドポイントです。有効なセッションハンドルと期限切れのアクセストークンをリクエストに含めて送信してください。

リクエストパラメーター

リクエストの生成方法については、OAuthにおけるリクエスト方法を参照してください。

パラメーター 説明
oauth_consumer_key アプリケーション登録時に発行したConsumer Keyを指定してください。
oauth_token 期限切れのアクセストークンを指定してください。
oauth_signature_method HMAC-SHA1を指定してください。
oauth_signature oauth_signature_methodで指定した署名方式に応じた署名の文字列を指定してください。署名の生成方法はリクエストの署名方法を参照してください。
oauth_timestamp リクエスト作成時のタイムスタンプ値を指定してください。タイムスタンプを生成して600秒以上たったリクエストは無効になります。
oauth_nonce リクエストごとにランダムな文字列を指定してください。
oauth_version 1.0を指定してください。
oauth_session_handle 有効なセッションハンドルを指定してください。

サンプルリクエストURL

https://auth.login.yahoo.co.jp/oauth/v2/get_token?oauth_consumer_key=dj0yJmk9UjI2WmVET25uRk9XJnM9Y29uc3VtZXJzZWNyZXQmeD1hZA--
&oauth_nonce=ef3a091928d5491624c0ac54d697124422705091
&oauth_signature_method=HMAC-SHA1
&oauth_signature=5f78507cf0acc38890cf5aa697210822e90c8b1c%261fa61b464613d0d32de80089fe099caf34c9dac5
&oauth_timestamp=1204762971
&oauth_version=1.0
&oauth_token=A%3DqVDHXBngo1tEtzox.JMhzd91Rk99.39Al7hos3J80mm1j_3nGP4BiilL777vUj2rsPLj1cZw.srbisvw.cz42Lzmlxt
H0Kk9mkXilvS1ll5lNoMKXO5zy5YG4vO3fbGKewp7IESYMIdEi4Md7SroYiv6kBCEjqB4jXr0.8XsMvOlQgZ.aKNKXwc2sv3n4BOZxs
54tzXV6rGNpEHZUaj9CovPUo44isTgs9FnLIKpXFCU4Jq1BB3_IOTFBNf1vtf5vSxaxe_L5dUhr.i15Hx0LTZ2tlsWeDcActSGGBWVc
vytPF3cK9mDWy44baBgCVI3AEbGCqg.NGhDPqOh1ZHfKFtYlBZfG4xf2n..CdxcM5x4INxnVz2.biMkfhfkw8haJuR0RaUY37lBxZ9z
3e.TlH0zdjaDjxh2tCoZQiHWPMe8HMv5LFYPZvsMp3tkG5u_QM9ymtn8jG.nDvEDA0rhBoODWguLW5079nD7RoezDxr.2b76jz7P4jY
d2k8BsZbBF6Y7V2nl.Gx9Sw5HVXa3cRWFBevCqUBPc5Tod4Cy1lLnTbxTYCpLYethRWERjX43C.td4VFqMkr3.TSZCc9UtsOeb2Ulr1
h.E8bRwPoXV9eq4vAtNX_8KVca9qcIJtvVV8kc3J6nZXWQyoLhQ5YYrtY33bT0COPBexk-
&oauth_session_handle=AKVdNElJthnrHDwnYDuj6fJ2ayRbJvkePz9AKwi9dQAfb4bd

レスポンスパラメーター

アクセストークン更新時のレスポンスパラメーターは、アクセストークン取得エンドポイントのレスポンスパラメーターと同一です。

エラーレスポンス

アクセストークン取得時のエラーレスポンスに加え、セッションハンドルが無効なときのエラーレスポンスが返却されます。

ステータスコード 401
oauth_problem=permission_denied
  • 有効期限が過ぎた、もしくは不正なoauth_session_handleです。

セッションハンドルの有効期間は通常2週間で、期限切れの際はpermission_deniedのレスポンスが返されます。その後、再度End Userの同意を取り直す必要があります。詳しくはサンプルコードを参照してください。



4. Web API

リクエストパラメーター

ここではOAuth対応のWeb API共通のリクエストパラメーターのみ記載しています。Web API固有のリクエストパラメーターについてはWeb APIの仕様書を参照してください。また、リクエストの生成方法については、OAuthにおけるリクエスト方法を参照してください。

パラメーター 説明
oauth_consumer_key アプリケーション登録時に発行したConsumer Keyを指定してください。
oauth_token 有効なアクセストークンを指定してください。
oauth_signature_method HMAC-SHA1を指定してください。
oauth_signature oauth_signature_methodで指定した署名方式に応じた署名の文字列を指定してください。署名の生成方法はリクエストの署名方法を参照してください。
oauth_timestamp リクエスト作成時のタイムスタンプ値を指定してください。タイムスタンプを生成して600秒以上たったリクエストは無効になります。
oauth_nonce リクエストごとにランダムな文字列を指定してください。
oauth_version 1.0を指定してください。

レスポンスパラメーター

OAuth対応の各Web APIの仕様書を参照してください。

エラーレスポンス

Web API(*.yahooapis.jp)へのリクエスト中のパラメーターが不足、もしくは不正な値が指定されている場合は以下のレスポンスが返却されます。

ステータスコード 401
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="version_rejected", realm="yahooapis.jp"
    </Message>
</Error>
  • Yahoo! JAPANのOAuthがサポートしていないoauth_versionです。1.0を指定してください。
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="parameter_absent: oauth_signature", realm="yahooapis.jp"
    </Message>
</Error>
  • リクエストに必要なパラメーターが不足しています。全パラメーターが存在する場合、Authorization header内の値がダブルクォート"で閉じられていることを確認してください。
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="parameter_rejected: oauth_signature_method", realm="yahooapis.jp"
    </Message>
</Error>
  • リクエストに必要なパラメーターが重複しています。重複しないようにパラメーターを指定してください。
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="timestamp_refused", realm="yahooapis.jp"
    </Message>
</Error>
  • 不正なoauth_timestampです。リクエストパラメーター生成から10分以上経過しているので、新しいリクエストを生成してやり直してください。
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="signature_method_rejected", realm="yahooapis.jp"
    </Message>
</Error>
  • Yahoo! JAPANのOAuthがサポートしていないoauth_signature_methodです。HMAC-SHA1を指定してください。
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="signature_invalid", realm="yahooapis.jp"
    </Message>
</Error>
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="consumer_key_unknown", realm="yahooapis.jp"
    </Message>
</Error>
  • 不正なoauth_consumer_keyです。正しいConsumer Keyを指定してください。
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="token_expired", realm="yahooapis.jp"
    </Message>
</Error>
  • 有効期限を過ぎたoauth_tokenです。有効なアクセストークンを指定してください。
<?xml version="1.0" encoding="utf-8" ?>
<Error>
    <Message>
        Please provide valid credentials. OAuth oauth_problem="token_unknown_format", realm="yahooapis.jp"
    </Message>
</Error>
  • 不正なoauth_tokenです。有効なアクセストークンを指定してください。

※OAuth非対応のWeb APIのエラーコードについてはこちらをご覧ください。