我正在尝试使用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的委派权限也会添加到该应用中。
答案 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;