我尝试使用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?如果是这样的话:
非常感谢!
答案 0 :(得分:6)
我已使用PHP成功连接到SharePoint Online。在我看来,你喜欢结合两种不同的方法来做到这一点。 这是我做的:
appregnew.aspx和appprincipals.aspx页面用于SharePoint的应用程序,但它看起来不像您正在构建一个。
答案 1 :(得分:4)
我认为您尝试从Sharepoint Online执行OAuth而不在Sharepoint中创建加载项。这是我面临的确切问题。我知道这是一个古老的问题,但我的回答可能对来到这里的其他人有帮助。
可以从任何网络应用程序执行OAuth。以下是我博客中的分步说明 -
高级概述 -
1)通过在此处注册来获取客户ID和秘密 - https://sellerdashboard.microsoft.com/Registration
2)通过以下步骤获取访问令牌,刷新令牌 -
https://msdn.microsoft.com/en-us/library/office/jj687470.aspx
答案 2 :(得分:0)
我可能在晚会上有点迟了,但对于遇到这个问题的人来说,你可以看看SharePoint Oauth App Client lib是如何做到的。
您可能希望查看SPSite和SPAccessToken类。
答案 3 :(得分:0)
我知道这很老,必须处理类似的问题并有2.5个解决方案。
此解决方案专门用于联合登录。
简单的hacky解决方案就像文件的魔术一样:)
在Windows 10上-最简单的解决方案:
\\<your_sharepoint_site.com>@SSL\rest\of_the\path
。在主机名后记@SSL
。https://<your_sharepoint_site.com>/rest/of_the/path
粘贴到“地图网络驱动器”的Folder
文本字段中。 X:\
!它使您可以将其视为来自任何程序或编程语言的普通文件系统文件夹。 简单的Hacky。
Request Header
都有一个Cookie
和FedAuth=some_very_long_base64_encoded_xml_struct;rtFa=something_else_long
。FedAuth
和rtFa
。Cookie
的新标题FedAuth=<fedauth-cookie-value>;rtFa=<rtFa-cookie-value>
。Programmatic-hacky(例如Windows上的python中的示例),本质上是#2,但cookie操作都是以编程方式完成的。
最后打开啤酒,享受您的一天。