适用于SharePoint 365 REST的Oauth2

Zin*_*rik 8 sharepoint oauth ms-office preview

我正在尝试使用OAuth2和REST API连接到Sharepoint Online(Sharepoint 365?)内容.我需要从Python执行此操作,因为它是对现有应用程序的补充.我已经设法使用OAuth2和REST将应用程序连接到Google云端硬盘,因此我想我了解使用OAuth2的基本原理.

我已经尝试了许多地方组合来配置client_id和client_secret并验证和接收访问和刷新令牌.

到目前为止,我已经能够接收刷新令牌并使用它来获取访问令牌; 但是,我无法使用访问令牌访问Sharepoint 365站点上的内容.

为了配置client_id和client_secret,我使用Azure管理门户将我的Sharepoint站点与AAD相关联.然后我使用client_id和client_secret将应用程序添加到Sharepoint AD条目.在Sharepoint中,我使用appregnew.aspx注册client_id并验证应用程序是否出现在appprincipals.aspx中.

我使用以下命令调用身份验证服务:.../login.windows.net/common/oauth2/authorize?api-version=1.0&response_type=code&client_id=&redirect_uri=&resource=Microsoft.Sharepoint

并且能够进行身份验证,接收代码,使用代码回调.../login.windows.net/common/oauth2/token并接收访问权限并刷新令牌.

我将这些令牌序列化,并从一个单独的进程调用.../login.windows.net/common/oauth2/token,其中包含refresh_token,client_id,client_secret和grant_type = refresh_token,并接收新的访问令牌.

最后,我使用新的访问令牌调用Sharepoint服务端点-my.sharepoint.com/personal//_api/web/files',但它无法告诉我资源Microsoft.Sharepoint无效(无效的受众Uri'Microsoft.SharePoint' )

我一直在旋转我的轮子尝试配置client_id的各种排列,这是我已经得到的.由于所有文档和示例似乎都依赖于使用诸如TokenHelper之类的C#库,我觉得我错过了一些关键但很简单但无法找到所需信息的东西.

有没有人使用Python,Ruby,Java等连接到Sharepoint Online?如果是这样:

  1. 应该在哪里配置client_id?
  2. 获取刷新和访问令牌的终点是什么?
  3. 请求令牌的适当受众uri或资源是什么?

非常感谢!

ric*_*alo 7

我已经使用PHP成功连接到SharePoint Online.在我看来,你喜欢结合两种不同的方法来做到这一点.这是我做的:

appregnew.aspx和appprincipals.aspx页面用于SharePoint的应用程序,但它看起来不像您正在构建一个.