Microsoft Graph REST API v1.0 - 使用应用程序权限列出个人联系人

Microsoft Graph REST API v1.0 - List personal contacts using application permissions

我已经在 Azure 门户中注册了一个 Web 应用程序,授予它 Contacts.Read 权限,给予它管理员同意,现在尝试使用 Microsoft Graph REST 列出特定用户的个人联系人 API v1.0 使用此应用程序。

起初我试图通过发送 POST 请求来获取访问令牌 https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token 具有以下 body 参数:scope=https://graph.microsoft.com/contacts.readgrant_type=client_credentials、我的 client_id 和我的 client_secret.

作为回应,我收到一个错误 400 Bad Request。 Body: {"error":"invalid_scope","error_description":"AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid. The scope https://graph.microsoft.com/contacts.read is not valid."}

当我像这样替换令牌请求中的范围参数时:scope=https://graph.microsoft.com/.default,我实际上收到了 200 OK 和我的 Bearer 令牌作为响应。

但是当我通过使用此令牌向 https://graph.microsoft.com/v1.0/users/{user_id}/contacts 发送 GET 请求来请求用户个人联系人时,我收到 401 Unauthorized 响应并出现以下错误:

"code": "NoPermissionsInAccessToken", "message": "The token contains no permissions, or permissions can not be understood.",

我也曾尝试用 {app_id_uri}/.default{app_id_uri}/contacts.read 替换令牌请求中的 scope 值,但没有成功。

那么我如何使用 Microsoft Graph REST API v1.0 列出用户个人联系人?我做错了什么?

编辑:权限截图:

保持范围:

scope=https://graph.microsoft.com/.default

您将需要应用程序权限(管理员):

  • users.read.all
  • contacts.read

如果你想add/edit联系

,我会选择读写版本

我还使用 offline_access

的委派权限

您已在旧交换中设置联系人,改为添加图表联系人权限。

我授予我的应用程序错误的权限。 Contacts.ReadUser.Read.All 权限在 Exchange 部分而不是 Microsoft Graph 部分。

我在 Microsoft Graph 部分授予了这些权限,一切正常。其实Contacts.Read权限就够了。

P.S。范围是 https://graph.microsoft.com/.default