【问题标题】:How do I Call Microsoft Teams OnlineMeeting endpoints via Microsoft Graph API using a console app?如何使用控制台应用程序通过 Microsoft Graph API 调用 Microsoft Teams OnlineMeeting 端点?
【发布时间】:2020-04-23 18:45:17
【问题描述】:

我按照微软下面link给出的代码示例,成功获取到用户列表。

我在 Azure Active Directory 中注册的应用程序也具有“OnlineMeeting.ReadWrite.All”应用程序权限。

但是当我试图通过在端点“https://graph.microsoft.com/v1.0/me/onlineMeetings”中发布请求来调用创建会议呼叫时。我收到 403 禁止错误。知道为什么我会得到这个吗?

【问题讨论】:

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


    【解决方案1】:

    对于graph api create online meetinghttps://graph.microsoft.com/v1.0/me/onlineMeetings,我们可以看到tutorial表示它不支持“应用程序权限”来调用它。它只支持“委托权限”,所以我们可以通过密码授权流程而不是客户端凭据流程来请求它。

    更新:

    如果您要求请求创建在线会议的图形API,我们可以使用密码授权流程或授权代码流程。这里提供一个密码授权流程示例(用户名和密码)供您参考,使用此示例获取令牌并通过此令牌请求图形 api。您还可以在此tutorial 中找到此示例。

    static async Task GetATokenForGraph()
    {
     string authority = "https://login.microsoftonline.com/contoso.com";
     string[] scopes = new string[] { "user.read" };
     IPublicClientApplication app;
     app = PublicClientApplicationBuilder.Create(clientId)
           .WithAuthority(authority)
           .Build();
     var accounts = await app.GetAccountsAsync();
    
     AuthenticationResult result = null;
     if (accounts.Any())
     {
      result = await app.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
                        .ExecuteAsync();
     }
     else
     {
      try
      {
       var securePassword = new SecureString();
       foreach (char c in "dummy")        // you should fetch the password
        securePassword.AppendChar(c);  // keystroke by keystroke
    
       result = await app.AcquireTokenByUsernamePassword(scopes,
                                                        "joe@contoso.com",
                                                         securePassword)
                          .ExecuteAsync();
      }
      catch(MsalException)
      {
       // See details below
      }
     }
     Console.WriteLine(result.Account.Username);
    }
    

    【讨论】:

    • 嗨,快点,感谢您的回答。从您的回答中可以清楚地看出,我不能仅使用应用程序流来创建会议。现在因为我的要求是从守护进程创建一个会议。您认为另一种方法是什么?
    • 嗨@TikluGanguly 对于请求这个图形API,我们可以只使用密码授权流程或身份验证代码流程。请参考我的回答中的“更新”。
    猜你喜欢
    • 2017-12-14
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多