YahooショッピングのAPIで認証するまでの基本的な流れは公式ドキュメントを見るのがはやい。https://developer.yahoo.co.jp/webapi/shopping/
前提
- Yahoo! IDを所持しているか作成すること
- アプリケーションを登録すること
- ストア従業員としてのビジネスIDが必要である
- 1と3を連携すること
- 自分のウェブサイトを持っていること(認証コードの発行に必要)
特定のストアでAPIを利用するにはYahoo! JAPAN IDへ、ストアクリエイタProに従業員として登録されている「ビジネスID」が紐づいている必要がある。
また、公式ドキュメントに「アプリケーションID」と記述されているが、実際にはそれは「Client ID」を指している。これが分かりづらい。Client IDを確認するには「アプリケーション管理」https://e.developer.yahoo.co.jp/dashboard(当然ログインが必要)のアプリケーション一覧から詳細ページに遷移すれば閲覧できる。
アプリケーション作成後の流れ
「Client ID」と「シークレット」が発行されたら認証コードを発行する。これはブラウザでurlを入力するだけ。公式ドキュメントにある通り、指定のウェブサイトにリダイレクトされ、その際にurlの末尾にcode=hogehogeというような値が得られる。
https://auth.login.yahoo.co.jp/yconnect/v2/authorization?response_type=code&client_id=hogehoge&redirect_uri=hogehoge&scope=openid+profile&bail=1
このcodeが公式ドキュメントにある「認可コード」だ。プログラムでトークンを発行するにはこの「認可コード」が必要となる。
ここまでで以下の情報がそろっていることだろう。これでプログラムでYahoo!のストアAPIにアクセスできる。
- Clent ID
- シークレット
- リダイレクト URI (アプリケーション登録に登録したuriと完全に一致すること)
- 認可コード
認証の詳細については公式ドキュメントを参照されたし。必須項目やtokenの更新などの説明がある。
https://developer.yahoo.co.jp/yconnect/v2/authorization_code/token.html
import urllib.request
import requests
import base64
import time
import json
import xml.etree.ElementTree as ET
#キーをエンコード
serviceSecret = 'hogehoge'
licenskey = 'hogehoge'
b64 = serviceSecret + ':' + licenskey
b64_en = base64.b64encode(b64.encode())
url = 'https://auth.login.yahoo.co.jp/yconnect/v2/token'
url_home = 'https://example.com' #あなたのウェブサイトのuri
def get_token():
headers = {
"Accept":"*/*",
"Content-Type":"application/x-www-form-urlencoded; charset=utf-8",
'Authorization': b'Basic ' + b64_en,
}
#token新規取得の場合
body = {
'grant_type': 'authorization_code',
'redirect_uri':url_home,
'code': code,
}
#リクエスト
response = requests.post(url, headers=headers, data=body)
return response
if __name__ == '__main__':
result = get_token()
if result.status_code == 200:
print(result.text)
else:
print(result.text, '認証失敗')

