è¶ ä¾¿å©ãª Python ã¢ã¸ã¥ã¼ã« requests ã使ã£ã¦ OAuth èªè¨¼ããZaim ã¨é£æºããæ¹æ³

ãHTTP for Humansãã§ããªãã¿ã® requests ã¢ã¸ã¥ã¼ã«ã 0.12.0 ã§ OAuth ã«å¯¾å¿ãã0.12.1 ã§ã¯ HTTP ã¬ã¹ãã³ã¹ã JSON ã ã£ãå ´åããªãã¸ã§ã¯ãã¸èªå夿ã§ããããã«ãªãã¾ãããããªãæè»½ã« Web ãµã¼ãã¹ã® API ãããããããã«ãªãã¾ããã
ããã§ã試ãã« Zaim ã¨é£æºãã¦ã¿ããã¨æãã¾ãã
requests ã®ã¤ã³ã¹ãã¼ã«
pip install requests
ã¾ãã¯
easy_install requests
ã¢ããªã±ã¼ã·ã§ã³ãç»é²
Zaim Developers ã«ã¢ã¯ã»ã¹ãããã¢ããªã±ã¼ã·ã§ã³ãç»é²ããã¦ãã ããã
Consumer Key ã Consumer Secret ãçºè¡ãããã®ã§ããããã¡ã¢ãã¦ããã¾ãã

Access Token ãçºè¡ãã
Python ã¹ã¯ãªãããã OAuth èªè¨¼ãè¦æ±ããzaim ã®ãã°ã¤ã³ç»é¢ã§ãã°ã¤ã³å¾ãAccess Token ãçºè¡ããã¾ãã
以ä¸ã Access Token åå¾ç¨ Python ã¹ã¯ãªããã§ãã
ã¹ã¯ãªãããå®è¡ããã¨ãèªè¨¼ç¨ URL ã表示ããããWhat is the PIN?ãã¨èããã¾ãã®ã§ãoauth_verifier ã®å¤ãå
¥åãã¾ãã
ã¡ãªã¿ã« oauth_verifier ã¯ç»é¢ã«ã¯è¡¨ç¤ºãããããã©ã¦ã¶ã§ãã½ã¼ã¹ã表示ããã㨠oauth_verifier ãæ¸ãã¦ããã¾ãã
consumer_key, consumer_secret ã®è¨å®ããå¿ãç¡ãã
# coding: utf-8 import urlparse import requests from requests.auth import OAuth1 consumer_key = u"YOUR CONSUMER KEY" consumer_secret = u"YOUR CONSUMER SECRET" request_token_url = u"https://api.zaim.net/v1/auth/request" authorize_url = u"https://www.zaim.net/users/auth" access_token_url = u"https://api.zaim.net/v1/auth/access" callback_uri = u"https://www.zaim.net/" def oauth_requests(): # Request Token # Web ãµã¼ãã¹ã¨ãã¦å®è£ ããå ´åã¯ãcallback_uri ã«èªè¨¼ãå®äºãããã¨ãéç¥ãããã # callback_uri ã«ãªãã¤ã¬ã¯ãããéãoauth_verifier ããã©ã¡ã¼ã¿ã¨ãã¦æ¸¡ãããã auth = OAuth1(consumer_key, consumer_secret, callback_uri=callback_uri) r = requests.post(request_token_url, auth=auth) request_token = dict(urlparse.parse_qsl(r.text)) # Authorize print "Auth link:" print "%s?oauth_token=%s" % (authorize_url, request_token["oauth_token"]) print oauth_verifier = unicode(raw_input("What is the PIN? ")) auth = OAuth1(consumer_key, consumer_secret, request_token["oauth_token"], request_token["oauth_token_secret"], verifier=oauth_verifier) r = requests.post(access_token_url, auth=auth) access_token = dict(urlparse.parse_qsl(r.text)) return access_token if __name__ == "__main__": print oauth_requests()
Zaim ã¨é£æºãã
Access Token ãã¨ããããZaim API ã«ã¢ã¯ã»ã¹ã§ããããã«ãªãã¾ãã
consumer_key, consumer_secret, oauth_token ã®è¨å®ããå¿ãç¡ãã
以ä¸ã®ã¹ã¯ãªããã§æ
å ±è¡¨ç¤ºãæ¯æãæ
å ±ã®å
¥åãè¡ã£ã¦ãã¾ãã
requests ã®ãããã§æ¥½ã¡ãã§ããããã¨ã¯リファレンスãåç
§ããªããéãã§ã¿ã¾ãããã

# coding: utf-8 from datetime import datetime import requests from requests.auth import OAuth1 consumer_key = u"YOUR CONSUMER KEY" consumer_secret = u"YOUR CONSUMER SECRET" access_token = u"ACCESS TOKEN" access_secret = u"ACCESS TOKEN SECRET" auth = OAuth1(consumer_key, consumer_secret, access_token, access_secret) def date_now(): return datetime.now().strftime("%Y-%m-%d") def genre(lang="ja"): endpoint = "https://api.zaim.net/v1/genre/pay.json" data = {"lang": lang} r = requests.post(endpoint, data=data, auth=auth) return r.json def create_payment(price=0): endpoint = "https://api.zaim.net/v1/pay/create.json" data = { "category_id": "101", "genre_id": "10101", "price": unicode(price), "date": date_now(), "comment": "test", } r = requests.post(endpoint, data=data, auth=auth) return r.json def money(): endpoint = "https://api.zaim.net/v1/money/index.json" data = {"limit": "10",} r = requests.post(endpoint, data=data, auth=auth) return r.json def credentials(): endpoint = "https://api.zaim.net/v1/user/verify_credentials.json" r = requests.post(endpoint, auth=auth) return r.json if __name__ == "__main__": print "-" * 100 print genre() print "-" * 100 print create_payment(1234) print "-" * 100 print money() print "-" * 100 print credentials()
ã¾ã¨ã
requests ã¢ã¸ã¥ã¼ã«ã®ãããã§ãREST API ã¸ã®ã¢ã¯ã»ã¹ãç°¡åã«ãªãã¾ããã
ãæ°ã«å
¥ãã® Web ãµã¼ãã¹ã¨é£æºãããå ´åã¯ãrequests ãå©ç¨ãã¦ã¿ã¦ãã ããã