使用 Phonegap/Cordova JS 应用程序和 MS ADAL JS。如何在真实手机中重定向 URI?

Posted

技术标签:

【中文标题】使用 Phonegap/Cordova JS 应用程序和 MS ADAL JS。如何在真实手机中重定向 URI?【英文标题】:Using Phonegap/Cordova JS App and MS ADAL JS. How to redirect URI in real mobile? 【发布时间】:2019-06-02 10:41:52 【问题描述】:

我正在使用 Phonegap/Cordova 开发一个 webapp,用于身份验证:Adal.js(用于 javascript 的 Active Directory 身份验证库)。在 UI 中使用 DevExtreme 组件。

在浏览器模拟器上它工作正常,但是当我生成 .apk 并安装在 android 移动设备上时,它不起作用。问题是重定向 Uri,在 Azure Portal -> App Registrations 中,我配置回复 url:https:localhost:port/index.html,但在 android 应用程序(在本例中为 cordova 应用程序)中,我需要将其配置为:file://android_asset/index.html。但不起作用。

有没有办法让它工作?

var microsoftAuthenticationParameters = 
        clientId: "myClientID",
        tenantId: "myTenantID",
        popUp: true,
        redirectUri: window.location.href + '/index.html',
        endpoints:  "aisApiUri": "myClientID" ,
        cacheLocation: "localStorage"
    

    function authenticate() 

        authContext = new AuthenticationContext(microsoftAuthenticationParameters);

        var isCallback = authContext.isCallback(window.location.hash);
        if (isCallback) 
            authContext.handleWindowCallback();
        

        if (isCallback && !authContext.getLoginError()) 
            window.location = authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST);
        
        else 
            authContext.getLoginError();
        

        var user = authContext.getCachedUser();

        if (user) 
            userInfo = user.userName;
            var username = userInfo.split("@");            
        
        else 
            authContext.login();
        

    

【问题讨论】:

【参考方案1】:

ADAL 不是为在 Cordova 中工作而设计的。但是,有一个 Cordova 插件可用于设置 AAD 身份验证。参考:Azure ADAL Authentication for Cordova App Guidance 另外,我建议您检查以下文档中提到的步骤,以向您的 Cordova 应用程序添加身份验证。 Add Authentication to the App

对于您描述的问题,*** 上提供了一些很好的解决方法,Github 上也提供了一些有用的示例。 Setting a valid Azure AD uri for PhoneGap

【讨论】:

以上是关于使用 Phonegap/Cordova JS 应用程序和 MS ADAL JS。如何在真实手机中重定向 URI?的主要内容,如果未能解决你的问题,请参考以下文章

HealthTap 是使用 phonegap cordova 开发的吗?

PhoneGap/Cordova 设备未准备好

为 Phonegap / Cordova iphone 应用程序设置 CMS

iOS - 如何使用 phoneGap / Cordova 中的参数调用 writeJavascript

Phonegap/Cordova - 套接字插件最终得到: undefined is not a function in cordova.js

如何为多平台phonegap/cordova开发组织代码