前回記事の続き。
PHPでOAuth2.0認証し、OneDriveのユーザー情報やフォルダ情報を表示するところまで成功した。
OAuth認証の処理イメージは以下図のとおり。
全体図
今回のプログラムでは、全体図内にある「クライアント=Webアプリサーバー」として、自宅サーバ(jitakusrv)を使って進める。
前準備
マイクロソフトの開発者サイトに行って、開発者登録を行う。
https://account.live.com/developers/applications/
このとき「リダイレクトURL」を入力しないといけないので、自宅サーバのURLを入力する(入力内容は後で変えられるから、仮の文字列でもOK)。
今回は「http://jitakusrv/RESTful/callback.php」とした。
処理開始
まずは自宅サーバにあるgetCode.phpを叩く(全体図内のWebアプリサーバー)
例:http://jitakusrv/RESTful/getCode.php
①getCode.php は、Microsoftの LiveConnectサーバ(oauth.live.com)に、認可コードをよこせと要求する。
getCode.php(抜粋)
②LiveConnectサーバーは、認可コードを渡していいかの認証画面を出す(全体図内の②。アプリ利用者=リソースオーナー による認証)
③認証がOKだったら、LiveConnectサーバーは認可コードを発行し、前準備の際に開発者登録画面で入力した「リダイレクトURL」に向けて返す。
④リダイレクト先に指定されたサーバ(jitakusrv)では、返ってきた認可コードをcallback.phpで受け取る。
callback.php(抜粋) ※ 認可コード受け取り
⑤認可コード($code)を受け取った callback.php は、そのコードを利用して「アクセストークンを要求するためのPOST文」を生成し、LiveConnectサーバにPOSTする。
それを受け取ったLiveConnectサーバは アクセストークン(access_token)を返す。
callback.php(抜粋)※ POST文の作成→LiveConnectサーバへPOST→access_token取得
⑥ アプリケーションサーバは、アクセストークン(かなり長い文字列)を使って、LiveConnectサーバ(全体図内のリソースサーバー/apis.live.net)に情報をよこせと要求する。
callback.php(抜粋) ※ LiveConnectサーバにOneDriveのユーザー情報を要求
参考
ユーザー情報の取得:Getting user data (REST)
アルバム情報の取得:Create, update, read, or delete albums on OneDrive (REST)
ファイルのDL/UP:Downloading and uploading files on OneDrive (REST)
実際に処理を走らせてみる。
ブラウザから自宅サーバにアクセスし getCode.php をクリックすると…
ブラウザにリダイレクトされ、callback.phpが呼ばれる(見た目上は単なる読み込みに見える)。
最後にリソース(OneDriveの中身/今回はユーザー情報)が返ってくる。
ーーー
これで、PHPからOneDriveのリソースの取り方が分かった。データはJSON形式で返ってくるらしい。これを使って、次回はOneDrive内のフォルダ&ファイルの一覧取得を試す。