如何在SharePoint Online中通过Azure函数与API图形进行正确身份验证?

mwngjboj  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(137)

再见,
我正在处理一个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声明必须存在于令牌中。
如何解决此错误?
多谢你了

anauzrmj

anauzrmj1#

我尝试在我的环境中重现相同的错误,但得到了如下相同的错误:

为了解决该错误,我创建了一个Azure AD应用程序并授予了如下所示的API权限

请注意,您只能根据您的需求添加**Sites.SelectedAPI权限。
我使用以下参数生成了范围为
https://graph.microsoft.com/.default**的令牌:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

 

client_id:ClientID
client_secret:ClientSecret
scope:https://graph.microsoft.com/.default
grant_type:client_credentials

使用上面生成的访问令牌,我能够成功通过SharePoint身份验证,如下所示:

https://graph.microsoft.com/v1.0/sites/

相关问题