共用方式為


使用 O365 探索服務和檔案 API 建立 Cordova 應用程式

在本主題中,您可了解如何將 Office 365 用戶端程式庫中的一些新 API 運用在以 Visual Studio Tools for Apache Cordova 建置的新應用程式中。

Visual Studio 2013 的 Office 365 API 工具

如果您是第一次嘗試要在 Cordova 應用程式工作流程中運用 Office 365 API,請遵循文件中的指示,安裝 Visual Studio Preview 的 Office 365 API 工具並將服務加入專案中。

Office 365 提供 REST 型的 API,可讓開發人員存取行事曆、連絡人、郵件、檔案等 Office 資源。 您可直接將 REST API 程式設計為與 Office 365 互動,但使用 REST API 時您必須撰寫並維護程式碼以管理驗證語彙基元、建構正確的 URL、查詢要存取的 API,以及執行其他工作。 反之,不用 REST 而改用 Office 365 用戶端程式庫存取 Office 365 API 時,可降低您在 Cordova 應用程式中需撰寫的程式碼複雜度。

Visual Studio Preview 的 Office 365 API 工具的最新更新包括支援 SharePoint 檔案服務,其可提供 MyFiles 服務的存取權。 除了 SharePoint 服務,亦支援 O365 探索服務以助尋找登入使用者的 SharePoint 服務端點。 這些服務都可用來建置簡單的檔案總管,以列舉商務用 OneDrive 中的檔案。

建置商務用 OneDrive 的簡單檔案總管

此應用程式的目標為列舉商務用 OneDrive 中儲存的檔案。 此範例的來源為 GitHub

OneDrive Explorer app using Office 365

快速入門

此應用程式會使用下列架構與程式庫。

  • Bootstrap,用於版面配置與樣式設定。

  • AngularJS,用於繫結資料與 UI。

  • Office 365 API,用來與 Office365 互動以列舉商務用 OneDrive。

示範應用程式中會使用下列服務,來擷取 OneDrive 的檔案:

  • O365 探索服務,可尋找登入使用者的 SharePoint 服務端點。

  • 檔案 API,可擷取使用者商務用 OneDrive 的檔案與資料夾資訊。

建立驗證和探索內容

應用程式必須先經過驗證後才能存取 Office 365 的服務。 Azure AD 中的常見同意架構可處理驗證作業。

在執行任何搭配 O365 服務的作業之前,您需要的基本物件是內容物件。 此示範應用程式需要下列內容物件:

  • 驗證內容

  • 探索內容

建構這些物件的程式碼如下所示:

var authContext = new O365Auth.Context();
var discoveryContext = new O365Discovery.Context();

authContext 物件可讓您擷取必要的 ID 語彙基元與存取語彙基元,這些語彙基元可用來取得使用者的資訊並呼叫特定服務。

discoveryContext 物件可讓您擷取 Office 365 服務的功能,例如郵件、行事曆或 MyFiles,以及它們的相應 URL 端點。

在您取得必要的 ID 語彙基元之後,就可用它來識別使用者。 ID 語彙基元是 base64 編碼的 Web 語彙基元。 您可使用這個語彙基元來擷取目前已登入的使用者,如下所示:

authContext.getIdToken("https://outlook.office365.com/").then(
        (function (token) {
    // Can use token.givenName and token.familyName
}).bind(this), function (reason) {
    console.og(reason.message);
});

存取語彙基元是 base64 URL 編碼的 Web 語彙基元,可用來存取 API。 下列說明如何取得用來呼叫 SharePoint 服務的存取語彙基元。

authContext.getAccessTokenFn('Microsoft.SharePoint')

使用檔案 API

"MyFiles" 的 SharePoint 功能物件可讓您透過程式設計方式來使用檔案與資料夾。 若要這樣做,您必須先取得功能集合,然後在傳回的集合中尋找 MyFiles 功能。 若要取得功能物件,請傳遞 Microsoft.SharePoint 的存取語彙基元以使用探索服務,如下所示:

var fileCapability;
discoveryContext.services(authContext.getAccessTokenFn(
    'Microsoft.SharePoint')).then(
    (function (capabilities) {
    // We have the capabilities object. 
    // Enumerate the object to get the capability 
    // for "My Files"
    capabilities.forEach(function (v, i, a) {
        if (v.capability === 'MyFiles') {
            filesCapability = v;
        }
    });
}).bind(this), function (error) {
    // error
});

現在您已取得 MyFiles 的功能物件,即可建立 SharePoint 用戶端,並呼叫檔案 API 以搭配使用者的檔案 (例如商務用 OneDrive 中儲存的檔案) 來進行作業。

建立 SharePoint 用戶端物件

若要建立 SharePoint 用戶端物件,我們需要儲存在功能物件中的端點 URI 資訊以及資源的存取語彙基元。

var sharePoint = new 
    Microsoft.CoreServices.SharePointClient (
    filesCapability.endpointUri,
    authContext.getAccessTokenFn(
        filesCapability.resourceId)
);

擷取檔案和資料夾

現在,我們即可如下所示呼叫 getFileSystemItems() 來列舉檔案:

sharePoint.files.getFileSystemItems().fetch().then(
    function (value) {
    value.currentPage.forEach(function (o) {
        // o._type will indicate whether this is a
        // file or folder.
        // o._Id provides the full path.
        // o._name provides the name of the file.
    });
}, function (reason) {
    console.log(reason);
});

在示範應用程式中,應用程式會擷取每個檔案的資訊,並將資訊儲存在本機 JSON 物件中。 應用程式會使用 AngularJS 來繫結 JSON 物件與 UI。

試試看!

Github 中有提供完整的應用程式。 請下載並嘗試範例後,將您的意見反應告訴我們。 我們很想聽聽您對新 API 的意見!