再见,
我正在处理一个Azure函数,该函数需要使用API图形读取/写入SharePoint Online列表。我在身份验证方面遇到一些问题。
我已经遵循了以下步骤:
1.已创建一个SharePoint Online网站和一个列表
1.已在Azure Active Directory中注册我的应用程序(单租户)
1.生成一个密码
1.已添加站点。已选择对我的应用程序的授权
1.在此link之后向我的管理员请求权限
1.编写代码以使用API图形
以下应用程序的授权:
在我的代码下面:
var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "my-tenant-id";
var clientId = "my-client-id";
var clientSecret = "my-secret";
var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphServiceClient = new GraphServiceClient(clientSecretCredential, scopes);
var test = await graphServiceClient
.Sites["my-site-id"]
.Lists["my-list-id"]
.Items.Request().GetAsync();
当我执行这段代码时,我得到这个错误:消息:scp或roles声明必须存在于令牌中。
如何解决此错误?
多谢你了
1条答案
按热度按时间anauzrmj1#
我尝试在我的环境中重现相同的错误,但得到了如下相同的错误:
为了解决该错误,我创建了一个Azure AD应用程序并授予了如下所示的API权限:
请注意,您只能根据您的需求添加**
Sites.Selected
API权限。我使用以下参数生成了范围为
https://graph.microsoft.com/.default
**的令牌:使用上面生成的访问令牌,我能够成功通过SharePoint身份验证,如下所示: