是否有一种简单的方法可以使用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?
我很欣赏对此问题的任何见解。
答案 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
将下一个内容粘贴到其中,将YourTenant
,client_id
,client_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"
您可以用脚本的完整路径替换./
。
将以下参数保存到文件中的某个位置:
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
对此应用程序的权限通过