【问题标题】:Not Able to Get Applications Url for Skype for Business无法获取 Skype for Business 的应用程序 URL
【发布时间】:2017-11-10 18:15:17
【问题描述】:

我正在尝试按照此处的说明在 Skype for Business Online 中使用 REST API:https://msdn.microsoft.com/EN-US/library/office/mt590891(v=office.16).aspx

我首先调用发现服务,然后为用户取回发现 URL;对我来说看起来像这样: https://webdir0b.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user

然后我调用 Azure 并成功获取 https://webdir0b.online.lync.com 的访问令牌。下一步是问题所在 - 我再次向用户的发现 URL 发出请求并包含访问令牌。调用成功返回,但问题是它在有效负载中没有文档中描述的“应用程序”url。相反,它返回的信息与我调用一般发现端点 (https://webdir.online.lync.com/autodiscover/autodiscoverservice.svc/root) 时得到的信息完全相同。我已经三重检查了我正在调用正确的端点,所以......关于为什么在为用户调用发现 URL 时我没有得到预期的有效负载的任何提示?

【问题讨论】:

  • 好吧...什么鬼。我一直在研究这个问题——有一次——它实际上返回了正确的有效载荷。幸运的是,我注意到它转到了不同的服务器,所以......这个 API 是否不适用于所有 SFB 服务器?具体来说,现在如果我将发现端点硬编码为webdir1a.online.lync.com/Autodiscover/AutodiscoverService.svc/…,那么我会得到正确的有效负载。如果我只是采用一般发现端点给我的东西,那么它每次都会失败,除非它碰巧落在这个服务器上。那么有什么关系呢??
  • 如果您已经通过了该点,则不应将您路由回位置 A,因此查看请求/响应跟踪以查看更大的图片会很有趣。如果您无法做到,您可以考虑获取 Fiddler 跟踪并联系 MSFT,因为在启用每个在线用户时可能会遇到一些小问题,您可能是少数不幸的人之一。
  • 我会尽量简短地回答 - 我得到了这个工作。第一个问题 - 当你没有在结果中得到“应用程序”时,你应该有一个“重定向”值。继续遵循并针对它执行 GET(使用获取访问令牌和添加 auth 标头的过程),最终您应该获得应用程序 Url。第二个问题 - 获得应用程序 URL 后,您需要获取另一个访问令牌并使用应用程序 URL 的主机名作为资源 ID。然后您可以发布和创建您的应用程序。真的希望这可以帮助某人。 :-)
  • 那是正确的。

标签: skype-for-business ucwa skypedeveloper


【解决方案1】:

(我真的在回复 Steve Pescka 吗?:o)

在我的例子中,在 user 资源上执行 GET
GET https://webdir0e.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=contoso.onmicrosoft.com

返回以下内容

 <resource rel="user" href="https://webpoolam30e08.infra.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user" xmlns="http://schemas.microsoft.com/rtc/2012/03/ucwa">  
   <link rel="applications" href="https://webpoolam30e08.infra.lync.com/ucwa/oauth/v1/applications" revision="2" />
   <link rel="xframe" href="https://webpoolam30e08.infra.lync.com/Autodiscover/XFrame/XFrame.html" />
 </resource>

所以它包含applications 资源的URI,为了创建你的应用程序要发布到哪里。 我有 O365 E5 许可证

【讨论】:

  • 嘿,谢谢 Massimo,真的是我。 :-) 感谢您发布您所拥有的内容,但我仍然暂时陷入困境,因为我没有得到与您相同的数据。我还在研究它,所以我想我们会看到会发生什么。
【解决方案2】:

我会尽量简短地回答 - 我得到了这个工作。第一个问题 - 当你没有在结果中得到“应用程序”时,你应该有一个“重定向”值。继续遵循并针对它执行 GET(使用获取访问令牌和添加 auth 标头的过程),最终您应该获得应用程序 Url。第二个问题 - 获得应用程序 URL 后,您需要获取另一个访问令牌并使用应用程序 URL 的主机名作为资源 ID。然后您可以发布和创建您的应用程序。真的希望这可以帮助某人。 :-)

【讨论】:

    【解决方案3】:

    正确。当调用用户资源的结果不包含应用程序时,会包含一个重定向值。这是一个例子:

    来电:

    https://webdir0b.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user
    

    可能会返回以下内容:

    {"_links":{"self":{"href":"https://webdir0b.online.lync.com/Autodiscover/AutodiscoverService.svc/root/user"},"xframe":{"href":"https://webdir2a.online.lync.com/Autodiscover/AutodiscoverService.svc/root/xframe"},"redirect":{"href":"https://webdir2a.online.lync.com/Autodiscover/AutodiscoverService.svc/root"}}}
    

    其中包括此重定向

    "redirect":{"href":"https://webdir2a.online.lync.com/Autodiscover/AutodiscoverService.svc/root"}}}
    

    要继续,您需要进行 Azure AD 身份验证调用,仅将 protocol://servername 的值作为资源传递。这意味着减少以下内容:

    https://webdir2a.online.lync.com/Autodiscover/AutodiscoverService.svc/root
    

    就是这样:

    https://webdir2a.online.lync.com/
    

    现在您已拥有 webdir2a.online.lync.com 的有效令牌,然后您需要将“/oauth/user”附加到重定向 URL。您会注意到最初的调用包含在 URL 中,而重定向 URL 没有。

    调用更新后的重定向 URL

    https://webdir2a.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user
    

    你应该得到你想要的:

    {"_links":{"self":{"href":"https://webpooldm12a04.infra.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user"},"applications":{"href":"https://webpooldm12a04.infra.lync.com/ucwa/oauth/v1/applications","revision":"2"},"xframe":{"href":"https://webpooldm12a04.infra.lync.com/Autodiscover/XFrame/XFrame.html"}}}
    

    应用程序资源是什么

    "applications":{"href":"https://webpooldm12a04.infra.lync.com/ucwa/oauth/v1/applications","revision":"2"}
    

    对于感兴趣的人,我创建了一个.NET-based console app,它演示了如何通过 UCWA API 登录 Skype for Business Online - 并在此过程中处理自动发现过程、重定向、应用程序创建等事物。

    【讨论】:

      【解决方案4】:

      我正在尝试按照此处的说明在 Skype for Business Online 中使用 REST API:https://msdn.microsoft.com/EN-US/library/office/mt590891(v=office.16).aspx

      我首先调用发现服务,然后为用户取回发现 URL;对我来说看起来像这样:https://webdir0b.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user

      然后我调用 Azure 并成功获取 https://webdir0b.online.lync.com 的访问令牌。下一步是问题所在 - 我再次向用户的发现 URL 发出请求并包含访问令牌。我收到 500 - Internal server error。您要查找的资源有问题,无法显示。

      【讨论】:

      • 这不是问题的答案。如果此处的答案不适用于您,请考虑发布一个新问题。
      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多