共有の共有リンク方法を使用して、共有ディレクトリを介してアクセスするOneDriveファイルをダウンロードして移動する方法を見つけるための支援が必要です。共有リンクディレクトリからOneDriveファイルをダウンロードして移動する
私は2人のユーザーがあります。
- ユーザー「」マイクロソフトの消費者で、定期的にOneDriveアカウントを持っており、フォルダ内のCSVファイル「のtest.CSV」を開催します
- 「toshare」をそして、ユーザのtest.CSVをダウンロードするには、グラフAPIを使用して、サブディレクトリ/ toshare /アーカイブにファイルを移動する必要も定期的にマイクロソフトの消費者は「B」
:私は現在、クロムを使用していますアプリ "高度なRESTクライアント"を手動でREST calにするMicrosoftのオンライン「Graph Explorer」ツールからネットワークトラフィックを検査することで、Authenticated OAuth BEARERトークンを取得しています。呼び出しを理解したら、Javaアプリケーションにその呼び出しを統合します。
は、私が正常にここでの指示に従っている: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/shares_get をフォルダの内容を表示します。
より明示的に、ユーザー 'A'はOneDriveに入り、 'toshare'フォルダを右クリックしてshareLinkを選択しました。私は、トークン共有にshareLinkを変換してから「B」ユーザーとしてグラフAPIと、次のAPI呼び出しを使用しています
GET https://graph.microsoft.com/v1.0/shares/<share-token>/root?$expand=children
これは私に「のtest.CSV」を含むディレクトリ内のすべてのファイルを、示しています
この情報を使用して、どのようにしてtest.csvをダウンロードできますか?ユーザー 'B'はファイルの名前を知らず、.csvファイルで識別できます(これはコードで行うことができます)。共有を介してファイルをダウンロードする方法に関する多くのドキュメントはないようです。
私が得ている最も近い私のファイルのオブジェクトの子供たちの「webUrl」属性を取り、その後、これが私のファイルのメタが表示されますトークンシェアにそれを回すと
GET https://graph.microsoft.com/v1.0/shares/<child-share-token>/root
を呼び出すことでした-データ。その後、私はダウンロードしておよそAPIドキュメントに従うことによって、それをダウンロードしようとhttps://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/item_downloadcontent
GET https://graph.microsoft.com/v1.0/shares/<child-share-token>/root/content
これは私がユーザA 'との通話を行う場合には動作しますが、ユーザー「B」のために動作しないので、これは興味深いです代わりに高度なRESTクライアントで403を取得します。 (私はグラフExplorerでそれを実行した場合、私は「URIが無効であるエンコードされたシェアのサイトを。」を得る代わりに、私は他の実験で発見したこれは、実際に認証の問題がありますを意味します。)また
GET https://graph.microsoft.com/v1.0/shares/<share-token>/root:/test.csv:/content
それが返されます: "400 Bad Request"メッセージ: "セグメント 'root:'のリソースが見つかりません。パススタイルのファイルナビゲーションが共有ディレクトリでは機能しないようですか?
この時点で私はむしろ固執しています。ファイルをダウンロードした後、既に読み込まれていることを示すサブディレクトリに移動したいと思います。OneDrive for Businessでもこの機能を利用したいと思っていますが、別の日に出発します。
任意の洞察力は素晴らしいのおかげだろう、 ジェレミー
それ以来、私はプログラム的に株式アプローチを扱うことをやめてしまった。私たちは現在、ユーザディレクトリに明示的にアクセスするために委任された権限を使用しています。そのドキュメントは非常に明確であり、うまく動作します。 – fei0x