INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

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"ボタンを押すとアプリが登録される。

f:id:tak95:20160707191501p:plain


アプリが登録されたらcallback urlを入力し、client_idおよびclient_secretをメモしとく。callback urlはhttps://localhostで良いみたい。

f:id:tak95:20160707191509p:plain


2. 認証コードの取得

ブラウザで以下のURLを入力してアクセスすると再びログインが求められるのでLifelogアプリで設定しているアカウントを指定する。

f:id:tak95:20160707194031p:plain


アクセス内容を確認して"Accept"する。

f:id:tak95:20160707194107p:plain


callback urlにlocalhostを指定していると"サーバーに接続できません"と表示されるがAccessToken取得に必要な認証コードは取得できるのでメモしておく。

f:id:tak95:20160707194903p:plain


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が取得できたので次は各種行動ログを取得する。