相关疑难解决方法(0)

当应用程序具有读取共享点站点的权限时,scp 或角色声明需要出现在令牌中

我在 Azure 中创建了一个应用程序并将其设置为使用访问令牌和 ID 令牌。

在此输入图像描述

我想连接到不同的租户并阅读 SharePoint 网站。以下是我已请求并获得管理员同意的权限:

在此输入图像描述

目前,我已经设置了应用程序密钥,但我计划稍后转向证书。

我有这个代码来获取访问令牌,并且我确实得到了一个访问令牌:

const params = new URLSearchParams();
params.append("grant_type", "client_credentials");
params.append("scope", "https://graph.microsoft.com/.default");
params.append("client_id", process.env.client_id);
params.append("client_secret", process.env.client_secret);

var url = `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/token`;
const response = await fetch(url,
    {
        method: 'POST',
        body: params,
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    }
);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试阅读下面的根站点时

var url = "https://graph.microsoft.com/v1.0/sites?search=*";
const response = await fetch(url,
    {
        method: 'GET',
        headers: { 'Authorization': `Bearer ${access_token}` }
    }
);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

error: { 
    code: 'AccessDenied',
    message: 'Either scp or roles claim need to be present …
Run Code Online (Sandbox Code Playgroud)

sharepoint-online microsoft-graph-api

4
推荐指数
1
解决办法
5470
查看次数