在前端开发中,有很多需要处理 SharePoint 认证的场景,比如访问 SharePoint 中的数据、管理 SharePoint 上的文档等。而在 Node.js 环境下,我们可以通过 npm 包 sharepoint-auth2 来简化 SharePoint 认证的过程。本篇文章将详细介绍如何使用这个 npm 包,包括如何获取 Token、如何发送请求以及如何处理认证过期等问题。
安装
首先,我们需要安装 sharepoint-auth2,可以通过以下命令进行安装:
npm install sharepoint-auth2
获取 Token
获取 Token 是 SharePoint 认证的第一步,我们可以使用 SharePoint 本身提供的 OAuth2 授权 API 来获取 Token,获取 Token 的方式包括 Client Credentials Flow 和 Authorization Code Flow 两种方式。我们在这里介绍 Authorization Code Flow 的方式。
首先,在 SharePoint 平台上创建一个应用程序,获取应用程序的 Client Id 和 Client Secret,打开 SharePoint 网站,点击左侧的“应用程序”,然后创建新的应用程序。
创建成功后,我们就可以获取到 Client Id 和 Client Secret,将它们保存到本地。
接着,我们可以使用 sharepoint-auth2 包提供的 getAuthUrl 方法,获取授权 URL,即:
const auth = require('sharepoint-auth2'); const redirectUrl = 'http://localhost:5000/authorize'; // 这里的 redirectUrl 应该是客户端应用程序的 URL const scopes = ['https://tenant.sharepoint.com/.default']; const url = auth.getAuthUrl(redirectUrl, scopes, { clientId: 'XXXXXX' });
授权 URL 可以重定向到该 URL,然后用户可以登录后授权,将会被重定向到 redirectUrl 地址,并获取 code 参数。
获取 code 后,我们可以使用 SharePoint 提供的 Token API,向 SharePoint 发送 HTTP 请求,获取 Token,即:
-- -------------------- ---- ------- ----- ---- - ---------------------------- ----- ----- - ----------------- ----- -------- -------------- ------------ - ----- --------- - ----- ------------------- ------------ - --------- --------- ------------- --------- --- ------ ----------------------- - ----- ---- - --------- ----- ----------- - ---------------------------------- -- --- ----------- ----------- --- ----- ----- - ----- -------------- -------------
发送请求
获取 Token 后,我们可以使用该 Token 向 SharePoint 发送 HTTP 请求,获取所需的数据。需要注意的是,在发送请求时,我们需要在请求头中添加 Authorization 字段,值为 Bearer {token}
,即:
-- -------------------- ---- ------- ----- ---- - ---------------------------- ----- ----- - ----------------- ----- ---- - --------- ----- ----------- - ---------------------------------- -- --- ----------- ----------- --- ----- ----- - ----- -------------- ------------- ----- --- - ----------------------------------------------- ----- ------- - - -------------- ------- ---------- -- ----- -------- - ----- -------------- - ------- --- ----- ---- - --------------
处理认证过期
由于 SharePoint 的 Token 有时限性,因此我们需要及时更新 Token。可以通过判断 Token 过期时间,然后在 Token 过期前更新 Token。
-- -------------------- ---- ------- ----- ---- - ---------------------------- ----- ----- - ----------------- ----- ---- - --------- ----- ----------- - ---------------------------------- -- --- ----------- ----------- --- --- ----- - ----- -------------- ------------- ----- --- - ----------------------------------------------- ----- ------- - - -------------- ------- ---------- -- ----- -------- - ----- -------------- - ------- --- ----- ---- - -------------- ----- -------------- - --- ------------------------- - ------ ----- ----------- - --- ------- ----- -------- - ------------------------ - ---------------------- -- --------- - ------ - -- ------------ ----- ----- - ----- ------------------------------------------ - --------- --------- ------------- --------- --- -
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------------------- ----- ----- - ----------------- ----- -------- -------------- ------------ - ----- --------- - ----- ------------------- ------------ - --------- --------- ------------- --------- --- ------ ----------------------- - ------ -- -- - ----- ---- - --------- ----- ----------- - ---------------------------------- -- --- ----------- ----------- --- --- ----- - ----- -------------- ------------- ----- --- - ----------------------------------------------- ----- ------- - - -------------- ------- ---------- -- ----- -------- - ----- -------------- - ------- --- ----- ---- - -------------- ----- -------------- - --- ------------------------- - ------ ----- ----------- - --- ------- ----- -------- - ------------------------ - ---------------------- -- --------- - ------ - -- ------------ ----- ----- - ----- ------------------------------------------ - --------- --------- ------------- --------- --- - -----
结语
以上就是使用 sharepoint-auth2 包进行 SharePoint 认证的全部过程,使用这个包可以大大简化 SharePoint 认证的过程,提高前端开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562a481e8991b448dfdc3