繁体   English   中英

如何在SharePoint Online from Azure Function with API Graph中正确认证?

[英]How to authenticate correctly in SharePoint Online from Azure Function with API Graph?

再见,

我正在处理 Azure Function 需要使用 API Graph 读取/写入 SharePoint 在线列表。 我在身份验证方面遇到了一些问题。

我已按照以下步骤操作:

  1. 创建了一个 SharePoint 在线站点和一个列表
  2. 在 Azure Active Directory(单租户)中注册了我的应用程序
  3. 生成一个秘密
  4. 为我的应用程序添加了 Sites.Selected 授权
  5. 通过此链接向我的管理员请求权限
  6. 编写代码使用 API 图

下面的应用程序的授权:

App的权限

在我的代码下面:

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 或角色声明。

我该如何解决这个错误?

万分感谢

我试图在我的环境中重现相同的内容并得到如下相同的错误:

在此处输入图像描述

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

在此处输入图像描述

请注意,您只能根据需要添加Sites.Selected API 权限。

我使用以下参数生成了 scope 作为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/

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM