min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

bash PythonでOneDriveに接続する

 

OneDriveをPythonコード上から使えるようにするには、以下の流れらしい。

マイクロソフトデベロッパーセンターへ接続

② ダミーのアプリを登録し、「Client ID」「Client Secret」を登録する

マイクロソフトの認証サイト(?)とやらで②を入力して、返ってくる値から「code」を得る

ーーー

マイクロソフトデベロッパーセンターへ接続

Microsoft デベロッパーセンター

https://account.live.com/developers/applications/

接続すると、マイクロソフトのアカウント名とパスワードを入力しログインさせられる。

ーーー

② ダミーのアプリを登録し、「Client ID」「Client Secret」を登録する

ダミーアプリ名は「msapp01」としてみた。「I accept」を押すと、ダミーアプリが登録されて、アプリの管理画面に移る。

f:id:min117:20160221032230p:plain

アプリ管理画面。左の「Basic Information」から Language を日本にした。

f:id:min117:20160221032250p:plain

左の「App Setting」を見ると、目的の「Client ID」「Client secret」が記載されているので、メモしておく。

f:id:min117:20160221032326p:plain

ーーー

マイクロソフトの認証サイト(?)とやらで②を入力して、返ってくる値から「code」を得る

以下の文字列の赤色の部分を②の情報に書き換える。

https://login.live.com/oauth20_authorize.srf?display=touch&locale=en&client_id=xxxxxxxxxxxxxxxx&response_type=code&scope=wl.skydrive+wl.skydrive_update+wl.offline_access

書き換えた文字列を、ブラウザのアドレス欄に入力すると…

f:id:min117:20160221033625p:plain

こんな画面が出るので「Yes」を押す。

 

f:id:min117:20160221032336p:plain

画面が遷移し「ページを開けませんでした」となるが、このときにアドレス欄に出ている文字列をコピーして保存しておく。

f:id:min117:20160221032345p:plain

文字列はこんな感じ。このうちの青色の部分(code)が、Python開発で必要になる

http://12e34fb5-b607-890f-123d-bd4dd56cb7d8.apps.dev.live.com/?code=M1234a5f6-78b9-f0ab-bb1f-2345e6e7e8cb

ーーー

PythonでOneDriveに接続する。onedrivesdk が必要らしい。

GitHub - OneDrive/onedrive-sdk-python: OneDrive SDK for Python! https://dev.onedrive.com

サイトの指示通りpip でインストールする。

f:id:min117:20160221035002p:plain

あれ。既にインストールしてあったようで、「already satisfied」と言われてしまった。

f:id:min117:20160221035048p:plain

早速コーディングする。上記サイトにある Sample に Authentication そのままを Pythonで書いてみる。

f:id:min117:20160221035248p:plain

「Client ID」と「Client Secret」は上記②で取得したものに変える。

$ vim test_Authentication.py

f:id:min117:20160221035443p:plain

実行してみる。

$ ./test_Authentication

f:id:min117:20160221035732p:plain

ダメだ。エラーになる。Python2.7だからか?

 

リダイレクトが悪いかもしれない。このへん調べる。

http://bonk.red/articles/OneDrive/index.html

うーん、よく分からない。OAuth2だと、Client ID、Client Secret、Redirect URI が必要なことは分かった。それが、Onedriveだけでなく、Amazon Cloud Driveであれ、Google Driveであれ、RESTfulなサービスのの開発に必要ぽいところまでは把握した。

問題は、Redirect URI だ。これが、localhost はダメぽい。「Redirect URI自宅サーバが使えるか」「DDNSにリダイレクトしていいのか」

このへんだ分からないの。

http://d.hatena.ne.jp/yk5656/20140608/1404012739