Skype Web SDK Oauth2授权无效资源

时间:2018-06-13 14:38:08

标签: oauth azure-active-directory skype-for-business

我正在尝试使用Skype Web SDK将Skype for Business与我的应用程序集成,但我甚至无法完成授权。这是我的代码,基于此视频的代码:https://youtu.be/EyHL1HH9FzE?t=20m20s

public connect() {
    var client_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";

    if (!/^#access_token=/.test(location.hash)) {
        console.log("no token");

        location.assign(
            "https://login.microsoftonline.com/common/oauth2/authorize"
            + "?response_type=token"
            + "&client_id=" + client_id
            + "&redirect_uri=" + location.href
            + "&resource=https://webdir.online.lync.com"
        );
    } else {
        console.log("token present");
    }
}

我被重定向到微软页面,我可以在那里登录,但接下来我将被重定向回我的应用程序,其中包含以下网址:http://myapp/ui/index.html#error=invalid_resource&error_description=AADSTS50001%3a+Resource+identifier+is+not+provided.%0d%0aTrace+ID%3a+0efb74b9-6063-4046-9710-836d43641d00%0d%0aCorrelation+ID%3a+7fcbee4c-e543-4b00-a485-152779f346bb%0d%0aTimestamp%3a+2018-06-13+13%3a52%3a30Z

所以它说错误是

  

无效资源且未提供资源标识符。

我已经从视频中复制了资源部分,并在多个其他教程中看到了它

+ "&resource=https://webdir.online.lync.com"

在azure中,我已将oauth2AllowImplicitFlow设置为true,并且Skype for Business Online的委派权限也会添加到该应用中。

1 个答案:

答案 0 :(得分:3)

  

无效资源且未提供资源标识符。

如果我使用location.assign,我也可以重现您提到的问题。似乎 CORS 阻止了它。它与resource=https://webdir.online.lync.com

无关
  

请注意,安全设置(如 CORS )可能会阻止此操作有效发生

<强>解决方案:

window.location.href = href

请尝试使用以下代码,然后它在我这边正常工作。有关详细信息,请参阅此article

 var client_id = "xxxx"
 window.sessionStorage.setItem('client_id', client_id);
 var href = 'https://login.microsoftonline.com/common/oauth2/authorize?response_type=token&client_id=';
 href += client_id + '&resource=https://webdir.online.lync.com&redirect_uri=' + window.location.href;
 window.location.href = href;