我使用这个库https://github.com/AzureAD/azure-activedirectory-library-for-cordova,这就是我编写代码的方式:
document.addEventListener("deviceready", () => {
let authContext = new Microsoft.ADAL.AuthenticationContext("https://login.windows.net/(tenant_id)");
console.log("@login : TokenAsync");
var uri = "&client_secret=(value)";
authContext.acquireTokenAsync((resourceurl), (client_id), (redirecturi), this.vEmail, encodeURI(uri))
.then((res) => {
console.log(res);
console.log("Token acquired: " + res.accessToken);
console.log("Ex acquired: " + res.expiresOn);
}, reject => {
console.log(reject);
}); }, false);
我尝试使用extraQueryParameters添加client_secret,但错误仍然相同:
AADSTS70002:请求正文必须包含以下参数: ' client_secret或client_assertion'。
我如何添加client_secret?还是有其他替代解决方案?
答案 0 :(得分:1)
AADSTS70002:请求正文必须包含以下参数:' client_secret或client_assertion'。
根据您提到的异常,我假设您注册了Web应用程序/ API应用程序。正如junas提到的,请尝试使用AAD原生应用程序,然后它应该工作。有关详细信息,请参阅此document -Constraints & Limitations section。
没有网站/保密客户
这不是ADAL限制,而是AAD设置。您只能使用来自本机客户端的那些流。机密客户端(例如网站)无法使用直接用户凭据。
答案 1 :(得分:0)