Outlook外接Rest Api令牌以获取SharePoint Rest Api令牌

时间:2018-09-27 20:31:06

标签: oauth-2.0 single-sign-on azure-active-directory outlook-addin sharepoint-online

我正在使用Node JS构建Outlook外接程序,并且它需要使用SharePoint Rest Api从SharePoint Online获取信息,因为Graph无法选择获取所需信息。

问题? 我需要一个SharePoint在线身份验证令牌来调用SP Rest Api,在用户输入凭据后,我将使用OAuth流(隐式流)来获取它。

是否可以使用 getCallbackTokenAsync() getUserIdentityTokenAsync()或“ getAccessTokenAsync()”方法返回的Outlook Rest Api获取SharePoint联机身份验证令牌? / p>

1 个答案:

答案 0 :(得分:0)

如果您只需要SharePoint REST API令牌(我假设您的意思是URL以_api / [...]开头的令牌),那么最好的选择是从网站的/ _api / contextinfo端点获取该令牌。如果我正确理解了该问题,则不需要Outlook REST API这样做。因此,您需要制定POST请求以:

http://yourspsite/_api/contextinfo
Headers:
accept: application/json
content-type: application/json

从返回的JSON获取令牌值:例如jsonResponse.FormDigestValue FormDigestValue字段包含所需的值。

有,希望对您有所帮助。 干杯, 拉兹万

有关Outlook加载项中NodeJS的更新:

正如您正确指出的那样,我没有从令牌本身中获取令牌的要求。目前仅在SSO插件(预览)中可以做到这一点。请参阅以下链接,了解如何实现它并使用getAccessTokenAsync获取Azure AD V2令牌:https://docs.microsoft.com/de-de/office/dev/add-ins/develop/sso-in-office-add-ins

确保事先使用https://apps.dev.microsoft.com

创建了AzureAD V2应用

为应用提供必要的操作权限,例如Sites.Read.All,用于读取所有网站集中的项目。

令牌的资源应类似于:

 https://[yourtenant].sharepointonline.com/

注意事项:要创建SSO加载项,您目前需要加入https://products.office.com/de-DE/office-insider中的Office Insider计划-需要注册。

最后:使用令牌调用常规的SharePoint REST API,如果您坚持在上述Azure应用程序中设置的权限内进行操作,它应该接受该令牌。