Skype for business web sdk 401在尝试登录时未授权



我试图创建一个应用程序使用Skype的商业网络SDK。

以下是登录代码的部分:

var config = {
    apiKey: 'a42fcebd-5b43-4b89-a065-74450fb91255', // SDK
    apiKeyCC: '9c967f6b-a846-4df2-b43d-5167e47d81e1' // SDK+UI
};
var Skype;
var app;
console.log(Skype);
Skype.initialize({ apiKey: config.apiKey }, function(api) {
    window.skypeWebAppCtor = api.application;
    window.skypeWebApp = new api.application();
    Application = api.application;
    app = new Application();
    console.log("app", app);
    skypeSignIn();
    window.skypeWebApp.signInManager.state.changed(function(state) {
        console.log("in",state);
    });
}, function(err) {
    console.log(err);
    console.log("cannot load the SDK");
});
var skypeSignIn = function() {
    app.signInManager.signIn({
        "client_id": "my-GUID", // GUID obtained from Azure app registration.
        "origins": ["https://webdir.online.lync.com/autodiscover/autodiscoverservice.svc/root"],
        "cors": true,
        "redirect_uri": 'https://freshservice.com',
        "version": 'freshservice skype for business integration'
    }).then(function() {
        alert('Logged in!');
    });

当我尝试上面的代码,它给出了一个错误401在源URL -

GET https://webdirin1.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user 401 (Unauthorized)

如何修复?

您上面共享的代码片段没有任何将用户重定向到Azure Active Directory (AAD)以便用户可以输入其凭据的代码。如果用户已经登录到浏览器,这是可以的,但否则您将需要重定向到AAD,允许用户登录,一旦AAD重定向回您的应用程序,然后调用app.signInManager.signIn方法。

查看更多详细信息:https://msdn.microsoft.com/en-us/skype/websdk/developwebsdkappsforsfbonline

确保您提供的重定向uri在AAD应用程序中配置为有效的应答url。

在登录过程中,您将注意到401。每次发生这种情况时,sdk都会重定向到AAD以获取令牌。如果用户已经登录,那么AAD应该用location.hash属性中的访问令牌重定向到所提供的uri。

首先,您需要使用Azure Active Directory获得应用程序的授权。这将返回一个访问令牌,然后随每个请求一起发送。如果没有这个访问令牌,所有请求都将是未经授权的。要获得访问令牌,您可以参考有关如何在线设置Skype Web SDK的资源。

然后在你的应用程序被授权后,你就可以使用Skype了。初始化和登录。这实际上会让你登录到Skype For Business。

除此之外,如果您已经授权,从服务器获得未经授权的响应是正常的。当应用程序第一次尝试登录时。如果服务器返回未授权,则启动授权过程。

相关内容

  • 没有找到相关文章

最新更新