我在向 S4BO 进行身份验证时遇到问题。我已注册我的应用(在 Azure 门户中),它与 Web SDK 演示相关,https://ucwa.skype.com/websdk 我遵循的过程如下:
-
我使用以下代码进行OAuth链接重定向:
https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&resource=https://webdir.online.lync.com&redirect_uri=http://myurl.dev/skype
-
获取已返回的身份验证代码并使用它来生成访问令牌:
POST https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=db01d1f5-f2a3-4d82-b4bc-6b3b4071d7df&resource=https://webdir.online.lync.com&redirect_uri=http://acme.intranet.dev/skype grant_type=authorization_code code=$thecodehere client_id=$clientidhere client_secret=$clientsecrethere redirect_uri=$sameuriasbefore
-
在此之后,我有了我的访问令牌。现在我需要我的用户网址。所以我做自动发现
GET https://lyncdiscover.mydomain.onmicrosoft.com
我收到的结果如下:
{
"_links": {
"self": {
"href": "https://webdir1e.online.lync.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=mydomain.onmicrosoft.com"
},
"user": {
"href": "https://webdir1e.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=mydomain.onmicrosoft.com"
},
"xframe": {
"href": "https://webdir1e.online.lync.com/Autodiscover/XFrame/XFrame.html"
}
}
}
我尝试登录用户网址:
GET https://webdir1e.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=mydomain.onmicrosoft.com HEADERS: Authorization: Bearer + theAccessTokenFromAbove Referer: https://webdir1e.online.lync.com/Autodiscover/XFrame/XFrame.html
在此之后,我得到了 403 无名氏。我哪里出错了?
- 获取已返回的身份验证代码并使用它来生成访问令牌
在此步骤中,作为资源,需要指定resource=https://webdir1e.online.lync.com
(注意1e)才能访问此特定中心。
实际上,从这一点开始,您必须在每个新服务器上进行身份验证,因此在所有webdirXX上,然后在webpoolXXXXX上进行身份验证。
我写了一篇巨大的交互式文章,详细描述了请求流(在我花了一周时间对 outlook.com 如何做到这一点进行逆向工程之后,因为 MSDN 文档 - 至少在撰写本文时 - 不完整且不正确),也许它可以有用:
- https://markeev.com/posts/skype4b/
如果您将应用程序重定向 URL 配置为文章 URL(当然是临时的),您甚至可以直接从那里测试查询。
此外,可以在Github上找到"一体式"的自动发现和身份验证代码(带有现场演示):
- https://github.com/andrei-markeev/skype4b