RでSony Lifelog APIを叩く(1/3) AccessTokenの取得
前回のTokyo.Rでの@dichika師の発表ではSony Lifelogアプリの画面から深い眠りと浅い眠りを判別されていた。 以前伺った際は「Sonyの人にも聞いたけどAPIはないって言ってた」と仰っていたがあったのでRから叩いてみた。
1. アプリケーションの登録
Get started | Sony Developer Worldにある通り。
Manage your applications | Sony Developer Worldからログインしてアプリケーションを登録する。
"Register a new Lifelog Platform application"でアプリ名を入力し、利用規約同意のチェックをしてから"Register application"ボタンを押すとアプリが登録される。
アプリが登録されたらcallback urlを入力し、client_idおよびclient_secretをメモしとく。callback urlはhttps://localhostで良いみたい。
2. 認証コードの取得
ブラウザで以下のURLを入力してアクセスすると再びログインが求められるのでLifelogアプリで設定しているアカウントを指定する。
アクセス内容を確認して"Accept"する。
callback urlにlocalhostを指定していると"サーバーに接続できません"と表示されるがAccessToken取得に必要な認証コードは取得できるのでメモしておく。
3. AccessTokenの取得
httr::oauth2.0_tokenとか使うともっとスマートにできるかもしれないが失効したaccess_tokenのrefresh方法が分からなかったので普通にPOSTする。
library(httr) pars <- list( client_id = "1でメモしたclient_id", client_secret = "1でメモしたclient_secret", grant_type = "authorization_code", code = "2でメモした認証コード") res <- POST("https://platform.lifelog.sonymobile.com/oauth/2/token", body=pars, encode="form") content(res) $access_token [1] "***************************" $expires_in [1] 3600 $token_type [1] "bearer" $refresh_token [1] "***************************" $refresh_token_expires_in [1] 0
取得したaccess_tokenは1時間で失効する。失効したらrefresh_tokenへPOSTしてaccess_tokenを再取得する。
pars <- list( client_id = "1でメモしたclient_id", client_secret = "1でメモしたclient_secret", grant_type = "refresh_token", refresh_token = content(res)$refresh_token) res <- POST("https://platform.lifelog.sonymobile.com/oauth/2/refresh_token", body=pars, encode="form")
access_tokenが取得できたので次は各種行動ログを取得する。