OneDriveへのファイルのアップロード中に色々とセキュリティ警告的な何かとか、
途中で止まるとかが起きていたので、OneDriveのサイトに久しぶりに行ってみました。
すると、新しいAPIが公開されていて!
それだけでなく、100M以上のファイルのアップロードに対応しました。
詳しいことは
ここを参照して貰えば分かるんですが・・・・
これまでのAPIとはかなり構造が違って、
まず、アクセス用のアドレスがこちら
https://api.onedrive.com/v1.0
専用のアドレスが出来ましたね☆
それ以外にも、コマンドが大分変わりました。
まず、前回と同じID方式
全部のファイル、全部のフォルダに一意のIDが振られていますので、それを取得しながらの操作と言うことに成ります。
これの問題点は、以前書いたように、特定のフォルダへ直接行けないと言うこと。
フォルダの移動は常に、一つ前か、次のフォルダへ行くことが条件
もちろん、経過途中でIDのリストを保管しておくことで毎回ルートから追う必要は無いけど、
それでも、途中のフォルダを大きく変更するとIDがずるっとずれる場合があるので、万全を期すなら、変更したフォルダ以下のIDリストを全部取得し直す必要がある。
それが、pathの指定が出来るって事はそのフォルダへ直接飛ぶことが出来ると言うことです。
これがパス指定の場合のアドレス。
https://api.onedrive.com/v1.0/drive/root:/x/x/x/x/:/children
こっちがID指定の場合のアドレス。
https://api.onedrive.com/v1.0/drive/items/xxxxxxxxxxxxxxxxxxxxxx/children
これらは、同時に行うことが出来るので、path指定で目的のIDを取得して、idに対して操作をするのが一番安全だと思う。
って事で、以前作った所の、半分以上が作り直しになる(笑
因みに、ページ上部にあるConsoleのリンクを押すと、
https://apigee.com/OneDrive/embed/console/OneDrive
ここへ飛ぶんだけど、
ここでAPIのテストが出来るというか、コンソールでAPI の操作ができる。
まぁ、テストにはうってつけよね?
このコンソールは、まず、認証が通っていないので、
Authentication の所のドロップダウンリストボックスで「OAuth2 Implicit Grant」を選択して、OneDriveへの接続許可を与えます。
これ、接続許可は他のアプリなんかと同じ
で、許可して直ぐには、認証結果が反映されないので、このコンソール画面をリフレッシュするか更新するかすればOK
リストにOneDrive-AuthenticatedUserというのが追加されているので、これを選択しておけば、後は、Request URLの所に、目的のAPIを書き込んでSendを押せば、即時実行されてその結果が画面に表示されるわ、
因みにRequest側は実際に送信されたリクエストが表示されて居るみたい。
Resposeの方には、実行結果が帰ってくるわね?
こっちにErrorとかが帰ってきていれば、APIが間違えているって事になるので、チェックね?
あと、左端の黒いところ?を弄るとAPIのリストが出てくるので参考にすると良いわ?
こっちを弄るとqueryに入れる値とかを入力するところが表示されるので、それはそれで便利なのかもしれないけど、あたしはやっぱり直接アドレス編集が良いかな?
送信メソッドがPOSTかGETかは、自動判別はしてくれないので、自分で頑張らないとダメ
当然Postにすればエンティティボディを入力する必要があるので注意
因みに100M以上のファイルを上げるのは
https://dev.onedrive.com/items/upload_large_files.htm
ここを参照って事で、
手順としては、まずセッションを張ります。
このセッションはHTTPのセッションとは無関係です。
どうやら、ファイルに対するアクセス制限が出来るらしいです。
その後は、
Content-Length: xxx
と
Content-Range: bytes xxx-xxxx/xxxxxx
を駆使して、順次アップします。
容量が最後まで送られれば終了という感じみたいです。
途中で500番台のエラーが出たら該当データの再送が行えるようでえす。
まぁこの送信方法は、100M無くても使えるんですが、注意事項としては10M以上のファイルに利用しろと書いてあります。
何故かというと、高速回線では分割サイズが10MB以上にするように指定してあり、
低速回線では5〜10Mサイズにしろと書いてあります。
それと、分割サイズを320 KBにすると、エラーが出る的な事が書いてありますね。最後の残りカスが偶然320kにならない様に注意しろと書いてある気がします。
さて、今週末にでも作るかな〜?
コレガできれば、一応完成と言うことに成るのです!
頑張らないと!