会社行きたくなかったんです。

自由になりたくて会社辞めました

IT Yahoo! ビジネス プログラミング

VB.net でYahoo APIのアクセストークンを取得してみました。

更新日:

前回の記事、「バッチ処理におけるYahoo APIのアクセストークン リフレッシュトークンの処理のフロー」で、「WEBへの導入」「SDKを使用しない場合」の処理により、アクセストークンを取得すれば良いことがわかりました。

(画像引用元:https://developer.yahoo.co.jp/yconnect/)

「Authorization Codeフロー」のよりアクセストークンを取得する方法

まずは、サーバーサイドのアプリケーションを登録します。
Yahoo!ショッピングのストア運営をサポートするAPIを利用したいので、こちらから登録しました。

処理の流れは、こちらです。

全体の流れは、

  1. 認可コードを取得
  2. アクセストークン、リフレッシュトークン、IDトークン取得
  3. リフレッシュトークンでアクセストークンを更新する

です。

1.認可コードを取得

Yahoo APIのアクセストークン 取得 VB.net

上の画像の部分は、
ブラウザでユーザー認可リクエスト画面を開く

ヤフーにログインする

リダイレクトされたURLに含まれる認可コードを取得する。

という意味です。

次のURL(Authorizationエンドポイント)にアクセスします。

https://auth.login.yahoo.co.jp/yconnect/v1/authorization?response_type=code&client_id=[アプリケーションID]&nonce=[適当な文字列]

[適当な文字列]は、空欄だとエラーになります。

他にもいろいろパラメーターがあります。

詳しくは、こちらを参照してください。

ヤフーにログインする画面に飛ぶので、ログインします。
アプリケーションID登録時に入力した「サイトURL」にリダイレクトされます。
このようなURLになります。
[サイトURL]?code=[コード]&state=xyz

この[コード]の部分が認可コードです。

2.アクセストークン、リフレッシュトークン、IDトークン取得

Tokenエンドポイントにアクセスします。

※サーバーサイドアプリケーションのTokenエンドポイントアクセス時にはBasic認証が必要です。
アプリケーション登録時に発行されたアプリケーションIDとシークレットを「:」(コロン)でつなぎ、Base64でエンコードしたものをAuthorizationヘッダーに乗せてアクセスしてください。

と書いてあるので、これをVB.netで実現します。

認可コードは、一度使用すると無効になるようです。
2回目以降、
webRes = webReq.GetResponse()
の部分で、400エラーが発生します。
これに気づかず何時間も悩みました。

レスポンスはJSON形式で、次のようになっています。

{""access_token"":""アクセストークン"",""token_type"":""bearer"",""expires_in"":""3600"",""refresh_token"":""リフレッシュトークン"",""id_token"":""IDトークン""}

3.リフレッシュトークンでアクセストークンを更新する

次は、取得したリフレッシュトークンを使用して、アクセストークンを更新します。
grant_typeをにrefresh_token 変更して、
refresh_tokenに取得したリフレッシュトークンを設定してPOSTします。

レスポンスはJSON形式で、次のようになっています。

"{""access_token"":""アクセストークン"",""token_type"":""bearer"",""expires_in"":""3600""}"

新しいアクセストークンに変更されました。

次回は、リフレッシュトークンによるアクセストークン更新の流れに関して考えてみたいと思います。

 

-IT, Yahoo!, ビジネス, プログラミング

Copyright© 自由になりたくて会社辞めました , 2018 AllRights Reserved Powered by AFFINGER4.