【问题标题】:How to use some APIs from Microsoft Graph如何使用 Microsoft Graph 中的一些 API
【发布时间】:2021-02-08 22:39:09
【问题描述】:

我有一个网络应用(c# .net 服务器端语言),我需要调用一些 API,如下所示:

https://graph.microsoft.com/beta/users/{user-id}/presence
https://graph.microsoft.com/v1.0/me/joinedTeams
https://graph.microsoft.com/v1.0/groups/{group-id-for-teams}/members

我对此了解不多,所以我有很多疑问。 在没有用户登录交互屏幕的情况下获取令牌(永不过期)的最佳方法是什么,或者是不可能的?如果有人对此有想法/提示,我非常感谢。

最好的问候!

【问题讨论】:

  • 我认为您不能使用 /presence 端点,因为它不支持应用上下文。见docs.microsoft.com/en-us/graph/api/…
  • @ShivaKeshavVarma,感谢您的评论,我的应用程序是一个 webapp (ASP.net MVC / C#),您知道我该如何使用这个 API(存在)吗?

标签: c# azure-active-directory microsoft-graph-api microsoft-teams microsoft-graph-teams


【解决方案1】:

建议您在没有用户登录时使用基于守护进程的client credential flow。这个流程会默认返回一个访问令牌(不是刷新令牌),而lifetime of the access token大约是1小时,所以如果要获取永不过期的访问令牌,需要使用powershell来create a token lifetime policy,和然后将策略分配给服务主体以设置令牌生命周期。

顺便说一句,对于第一个 api,您不能使用 /presence 端点,因为它不支持应用程序上下文。对于第二个 api,您应该将 /me 更改为 /users/{user id}

【讨论】:

  • Carl,谢谢,其实我真正需要的是使用这些API,所以如果用户需要登录微软账户是没有问题的,我们可以改变这个要求,有了那个,您推荐使用这些 API 的最佳登录形式是什么?
【解决方案2】:

您可以使用此 C# 代码段检查用户是否存在:

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var presence = await graphClient.Me.Presence
    .Request()
    .GetAsync();

并从控制器类调用 api。

【讨论】:

  • 感谢您的回答,我会检查一下,但是否可以将 Presence API 与 Asp.net MVC 应用程序一起使用?
  • 是的,但你应该有一个有效的 Graph API 令牌。
猜你喜欢
  • 2020-04-26
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 2019-02-27
  • 2022-01-19
  • 2022-12-09
相关资源
最近更新 更多