Microsoft Graph API:如何在没有浏览器的情况下获取访问令牌

时间:2017-04-03 14:03:58

标签: sharepoint oauth-2.0 microsoft-graph

我想将一个给定的文件上传到Sharepoint。我使用的是Microsoft Graph API。

documentation遵循此工作流程:

1. If no token, redirect the user to the Microsoft signin page.
2. The user is then redirected to the application, with an access token
3. Use access token to have an authorization bearer
4. Do what you gotta do...

我的问题是登录部分。我不希望我的用户被重定向到Microsoft登录页面。我希望我的应用程序连接并在后台获取访问令牌(使用cURL或其他)。

我该怎么做?为什么"在浏览器中打开"必要?

我尝试复制登录过程,但我得到的只是来自登录页面的HTML响应。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您的应用程序充当单租户服务或守护程序应用程序。

有关此方案的文档位于:https://developer.microsoft.com/en-us/graph/docs/authorization/app_only

  • 应用程序必须在与Office365租户相对应的AzureAD目录中注册
  • 通过传递在目录中注册的应用程序唯一标识符和密钥来进行第一个请求。此请求返回访问令牌

现在可以在以下对Microsoft Graph API的请求的 Authorization 标头中使用访问令牌。

答案 1 :(得分:0)

此方法(使用客户端ID和密钥)运行良好,但还有其他方法可能更适合类似的方案。

以这种方式生成的访问令牌中缺少的一个主要因素是用户,这意味着该令牌仅包含OAuth 应用程序(客户端)的标识但它与请求的任何用户都没有关联。

这可能有两个含义:

  • 由于令牌与特定用户无关,因此您不知道是谁执行了该操作。在您的示例中,您不知道是谁上传了文件(并且可能缺少其他类似信息)。
  • 对于某些方法,没有用户的访问令牌根本不起作用。对于那些,您需要委托令牌

创建委托令牌需要付出一些努力,如果您有兴趣,可以在我的文章中找到详细信息:

Getting Access Token for Microsoft Graph Using OAuth REST API