2016-10-03 139 views
0

我正嘗試使用Skype for business web SDK創建應用程序。Skype for business web sdk 401嘗試登錄時未經授權

這裏是登錄代碼的一部分:

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!'); 
    }); 

當我嘗試了上面的代碼提供了有關源URL錯誤401 -

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

如何這個問題能解決?

回答

0

首先,您需要使用Azure Active Directory來授權您的應用程序。這將返回一個訪問令牌,然後隨每個請求一起發送。沒有這個訪問令牌,所有的請求都是未經授權的。要獲得訪問令牌,您可以參考此資源如何Set up Skype Web SDK Online

然後,在您的應用獲得授權後,您就可以使用Skype.Initialize和SignIn。這實際上會讓你登錄Skype For Business。

除此之外,如果您已經授權,從服務器獲得未經授權的響應是正常的。當應用程序首先嚐試登錄。如果服務器返回未授權狀態,則會啓動授權過程。

+0

這個訪問令牌應該用在哪裏?我找不到使用訪問令牌的任何參考。 –

+0

@SoorajChandran您不必擔心使用訪問令牌。 Skype Web SDK負責管理它,並自動爲每個請求附加訪問令牌。 – Shahzad

+0

我們能夠通過SDK登錄用戶。然而,我們正在嘗試使用訪問令牌來做同樣的事情,以便令牌可以持久化,並且用戶不必每次都登錄。這是可以實現的嗎? –

1

上面共享的代碼片段沒有任何代碼將用戶重定向到Azure Active Directory(AAD),以便用戶可以輸入其憑據。如果用戶已經登錄到瀏覽器,這是可以的,但除此之外,您需要重定向到AAD,允許用戶登錄,並且一旦AAD重定向回到您的應用程序,然後調用app.signInManager.signIn方法。

查看此頁面瞭解更多詳情:https://msdn.microsoft.com/en-us/skype/websdk/developwebsdkappsforsfbonline

確保您提供的重定向URI在AAD應用程序作爲一個有效的回覆地址配置。

在登錄過程中,您將注意到401s。每次發生sdk都會重定向到AAD以獲取令牌。如果用戶已經登錄,則AAD應該在location.hash屬性中使用訪問令牌重定向回提供的uri。

+0

我發出了OAuth請求並獲得了訪問令牌。我怎麼能在請求頭中使用這個令牌來通過sdk發出一個api請求並登錄這個用戶。有沒有關於這方面的文件? –

相關問題