curl请求Microsoft Sharepoint API?

时间:2015-02-11 08:03:13

标签: rest sharepoint curl sharepoint-2013 sharepoint-api

是否有一种简单的方法可以使用cURL请求REST API来访问我的Sharepoint帐户上的文件?例如

curl -i -H "Authorization: Bearer <some-key-here>" https://mysharepoint.com/_api/web/Lists

我已阅读有关authentication and authorization for apps的所有文档,但在这种情况下,我没有&#34;应用程序&#34;我可以注册。我只需要在REST请求中使用某种API密钥。如何以这种方式使用REST API?

我很欣赏对此问题的任何见解。

2 个答案:

答案 0 :(得分:1)

如果这仍然相关,这对我来说是这样的:

curl https://mysharepoint.com/_api/web/Lists -v --ntlm --negotiate -u user:password

您基本上使用ntlm进行身份验证(请注意,某些共享点可能需要Kerberos),然后可以通过浏览器轻松访问REST API。

答案 1 :(得分:1)

创建bash脚本:

$ nano get_access_token.sh

将下一个内容粘贴到其中,将YourTenantclient_idclient_secret更改为您自己的值(您可以在下面的Sharepoint部分中找到)。

wwwauthenticate=$(curl -i -H "Authorization: Bearer" -s "https://YourTenant.sharepoint.com/_vti_bin/client.svc/" | grep -i "www-authenticate")
bearer_realm=$(echo $wwwauthenticate | awk -F"," '{print $1}' | awk -F"=" '{print $2}' | tr -d '"')
app_id=$(echo $wwwauthenticate | awk -F"," '{print $2}' | awk -F"=" '{print $2}'  | tr -d '"')

grant_type="grant_type=client_credentials"
cl_id="client_id=c2xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx@$bearer_realm"
cl_secret="client_secret=3zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
res="resource=$app_id/YourTenant.sharepoint.com@$bearer_realm"
url="https://accounts.accesscontrol.windows.net/$bearer_realm/tokens/OAuth/2"
content_type="Conent-Type: application/x-www-form-urlencoded"

access_token=$(curl -X POST -H $content_type --data-urlencode $grant_type --data-urlencode $cl_id --data-urlencode $cl_secret --data-urlencode $res -s $url | awk -F":" '{print $NF}' | tr -d '"}')

echo $access_token

应用适当的权限:chmod 700 get_access_token.sh

您可以通过以下方式将curl与该令牌一起使用:

curl -i -H "Authorization: Bearer $(./get_access_token.sh)" -H "Accept: application/json;odata=verbose" -s "https://YourTenant.sharepoint.com/_api/web"

您可以用脚本的完整路径替换./

Sharepoint的一部分:

  1. 通过以下方式注册新应用
    • 跟随https://YourTenant.sharepoint.com/_layouts/15/appregnew.aspx链接
    • 生成客户端ID 和**“客户端机密” **值
    • 填写标题应用程序域重定向URI 字段(我在图片上输入了localhost.com,它可以正常工作)< / li>
    • 点击创建按钮 enter image description here
  2. 将以下参数保存到文件中的某个位置:

    The app identifier has been successfully created.
    Client Id:      898c898f-89238-43d0-4b2d-7a64c26f386a
    Client Secret:  4/T+21I1DSoAJdOX9DL1Ne4KssEaP7rqb11gdtskhXn=
    Title:          SomeTitle
    App Domain:     localhost.com
    Redirect URI:   https://localhost.com/default.aspx
    
  3. 对此应用程序的权限通过

    • 跟随https://YourTennant.sharepoint.com/sites/SharePointRND/_layouts/15/appinv.aspx
    • 应用ID 字段中插入客户ID 898c898f-89238-43d0-4b2d-7a64c26f386a
    • 点击查找按钮
    • 将下一个代码粘贴到许可请求XML 中(在我的情况下,我仅需要Read访问权限,因此我将Right的值从{{1} }到FullControl):

      Read
    • 点击
    • 创建底部按钮 enter image description here
    • 信任它按钮点击

Here's Postman related but similar answer