APEXアプリケーションにサインインしたユーザーで、OneDriveの操作を行うAPIを呼び出して応答を確認します。
Microsoft Graph APIはOData(Open Data Protocol)に対応しているとのことなので、以下のAskTOM Office Hourで紹介されているODataのREST Data Sourceプラグインを使用できるかもしれません。
APEX and OData? REST Data Sources at your service!https://asktom.oracle.com/pls/apex/asktom.search?oh=19326
ODataプラグイン自体はGitHubからダウンロードしてインストールします。
https://github.com/oracle/apex/tree/22.2/plugins/rest-source/odata-rest-apis
JSON形式の応答が表示されます。この出力結果はアプリケーションを作る際に使用するため、コピーしてファイルに保存します。
ODataプラグインについては改めて調べることにして、本記事ではGraph APIを直接呼び出します。
すでに作成されているホーム・ページに、Graph APIの応答を表示する機能を実装します。
Bodyにページ・アイテムを作成します。
識別の名前はP1_MS_GRAPH_API、タイプはテキスト・フィールド、ラベルはMS Graph APIとします。このページ・アイテムにGraph APIのURLを入力します。
Graph APIを呼び出すボタンを作成します。
識別のボタン名をSUBMIT、ラベルをSubmitとします。動作のアクションとして動的アクションで定義を選択します。
新規にリージョンを作成します。
識別のタイトルはGraph API Responseとします。タイプとして動的コンテンツを選択します。APEX 22.2で新設されたリージョン・タイプで、リフレッシュに対応しています。
ソースのCLOBを返すPL/SQLファンクション本体として、以下を記述します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
declare | |
l_response blob; | |
l_response_pretty clob; | |
begin | |
if :P1_MS_GRAPH_API is not null then | |
l_response := apex_web_service.make_rest_request_b( | |
p_url => :P1_MS_GRAPH_API | |
,p_http_method => 'GET' | |
,p_credential_static_id => 'MS_AZURE_AD' | |
); | |
select json_serialize(l_response returning clob pretty) into l_response_pretty from dual; | |
end if; | |
return '<pre><code>' || l_response_pretty || '</code></pre>'; | |
end; |
送信するページ・アイテムとしてP1_MS_GRAPH_APIを設定します。
ボタンSUBMITをクリックしたときに、リージョンGraph API Responseをリフレッシュする動的アクションを作成します。
ボタンSUBMIT上で動的アクションの作成を実行します。
識別のタイトルはClick Submitとします。タイミングはデフォルトで、イベントがクリック、選択タイプはボタン、ボタンとしてSUBMITが設定されます。
TRUEアクションの識別の名前はCall Graph API、アクションとしてリフレッシュを選択します。
以上でGraph APIを呼び出して応答を確認するページは完成です。
ページを実行し、テストしてみます。
最初にGraph APIとして以下を指定し、結果を確認します。
ユーザーが所有しているドライブの一覧を取得します。
https://graph.microsoft.com/v1.0/me/drives
JSON形式の応答が表示されます。この出力結果はアプリケーションを作る際に使用するため、コピーしてファイルに保存します。
例えば、drives.jsonというファイルに保存しておきます。
ドライブのルートにあるファイルを取得します。