Office 365 API入门


[原文发表地址] Getting Started with the Office 365 APIs

[原文发表时间] 2014/10/14

我很高兴可以在周末的Silicon Valley Code Camp上和周四的East Bay.NET 用户组会议上发表一些关于Office开发主题的演讲。并且很高兴可以把这三个演讲安排在同一周,因为我最近一直为面向内部的工作做了很多事情。我很迫切得想尽快去把这些分享给开发人员社区。

其中之一是构建 SharePoint 应用程序 。 Office 和SharePoint应用程序可以用您的自定义设置来订制Office和SharePoint体验。应用程序是基于Web的,那么您可以使用HTML和JavaScript来订制Office(Outlook、 Word、 Excel、 PowerPoint)和SharePoint 本身。

关于应用程序的更多信息,请参阅 MSDN 库:Office SharePoint 应用程序

我们也一直努力于另一个令我兴奋的开发模型。它允许您构建自定义的应用程序,并从Office365(网站、 邮件、 日历、 文件、 用户)中得到数据。它们是从各类平台和设备中访问SharePoint,Exchange和Azure Active Directory中的简单REST OData API。 您也可以使用这些API来增强您机构中已投入使用的业务应用程序的自定义。

为了更容易使用这些API,我们也为.NET, Cordova and Android构建了客户端库。由于.NET 库是便携式的,所以您可以在 Winforms,WPF,ASP.NET,Windows Store,Windows Phone 8.1,Xamarin Android/iOS中使用它们。 并且也有面向Cordova和Android (Java) SDK 的可用的Javascript库。

如果你有 Visual Studio,那么通过安装Office 365 API 工具扩展Visual studio更易获取该工具简化了 Azure 中的应用程序注册和权限设置,并且通过 NuGet,它会将相关的客户端库添加到您的解决方案中。

在您开始之前,您需要设置您的开发环境

请注意,工具和API当前都正在预览中。但是他们有非常棒的结构,是一个很好的开始。请阅读这里的客户端库 以及MSDN库里面的Office365 API。更多文档即将到来。

让我们看看它是如何工作的吧!一旦您安装了此工具,您可以在您的解决方案资源管理器中用鼠标右键单击您的项目,并选择添加 — — 连接服务......

这将启动服务管理器,让您可以登录到您的 Office 365 开发人员网站中,并选择您想要用的每个服务的权限。

一旦您单击了确定,客户端库会被添加到您的项目中,示例代码文件可以帮助您入门。客户端库可以帮助您执行身份验证并为您提供强类型的服务,让您工作更轻松。

重要的部分。

const string MyFilesCapability = "MyFiles";
static DiscoveryContext _discoveryContext;
 
public static async Task<IEnumerable<IFileSystemItem>> GetMyFiles()
{
    var client = await EnsureClientCreated();
 
    // Obtain files in folder "Shared with Everyone"
    var filesResults = await client.Files["Shared with Everyone"].
        ToFolder().Children.ExecuteAsync();
            
    var files = filesResults.CurrentPage.OrderBy(e => e.Name);
 
    return files;
}
    
public static async Task<SharePointClient> EnsureClientCreated()
{
    if (_discoveryContext == null)
    {
        _discoveryContext = await DiscoveryContext.CreateAsync();
    }
 
    var dcr = await _discoveryContext.DiscoverCapabilityAsync(MyFilesCapability);
            
    var ServiceResourceId = dcr.ServiceResourceId;
    var ServiceEndpointUri = dcr.ServiceEndpointUri;
 
    // Create the MyFiles client proxy:
    return new SharePointClient(ServiceEndpointUri, async () =>
    {
        return (await _discoveryContext.AuthenticationContext.
            AcquireTokenSilentAsync(ServiceResourceId, 
            _discoveryContext.AppIdentity.ClientId,
            new Microsoft.IdentityModel.Clients.ActiveDirectory
                .UserIdentifier(dcr.UserId, 
                Microsoft.IdentityModel.Clients.ActiveDirectory
                .UserIdentifierType.UniqueId))).AccessToken;
    });
}

此代码使用Discovery Service来检索其他的终端 (DiscoverCapabilityAsync)。当我们创建客户端代理时,向用户显示登录到 Office 365,然后要求他们要对我们的应用程序授予权限。一旦他们授权,我们就可以访问他们的 Office 365 数据。

如果我们看到该请求,调用:

var filesResults = await client.Files["Shared with Everyone"].
        ToFolder().Children.ExecuteAsync();

(在我的案例中),会转换为:

GET /personal/beth_bethmassi_onmicrosoft_com/_api/Files('Shared%20with%20Everyone')/Children

回应将会是存储在需求文件夹(和任何子文件夹)中的所有文件信息。

到处尝试一下,你会发现更多功能。您可以做的很多事情。我鼓励您看看 GitHub上的示例:

想要了解更多,请查阅我今年夏天做的采访视频:

阅读愉快!


Comments (0)

Skip to main content