1

こんにちは、MF8 の新しいアプリでセキュリティ チェックを実行しようとしています (mf コンソールから cordova サンプル アプリをダウンロードし、Android プラットフォームを追加するだけです)。

var UserLoginChallengeHandler = function() {
var isChallenged = false;
var securityCheckName = 'UserLogin';  
var objs = Object.getOwnPropertyNames(WL.App);
for(var i in objs ){
console.log(objs[i]);
}
var userLoginChallengeHandler = WL.Client.createSecurityCheckChallengeHandler(securityCheckName);

document.getElementById("login").addEventListener("click", login);
document.getElementById("logout").addEventListener("click", logout);

userLoginChallengeHandler.securityCheckName = securityCheckName;

userLoginChallengeHandler.handleChallenge = function(challenge) {
    WL.Logger.debug("handleChallenge");
    showLoginDiv();
    isChallenged = true;
    var statusMsg = "Remaining Attempts: " + challenge.remainingAttempts;
    if (challenge.errorMsg !== null){
        statusMsg = statusMsg + "<br/>" + challenge.errorMsg;
    }
    document.getElementById("statusMsg").innerHTML = statusMsg;
};

userLoginChallengeHandler.handleSuccess = function(data) {
    WL.Logger.debug("handleSuccess");
    isChallenged = false;
    document.getElementById ("rememberMe").checked = false;
    document.getElementById('username').value = "";
    document.getElementById('password').value = "";
    document.getElementById("helloUser").innerHTML = "Hello, " + data.user.displayName;
    showProtectedDiv();
};

userLoginChallengeHandler.handleFailure = function(error) {
    WL.Logger.debug("handleFailure: " + error.failure);
    isChallenged = false;
    if (error.failure !== null){
        if (error.failure == "Account blocked") {
            document.getElementById("loginDiv").style.display = "none";
            document.getElementById("blockedDiv").style.display = "block";
            document.getElementById("blockedMsg").innerHTML = "Your account is blocked. Try again later.";
        }
        alert(error.failure);
    } else {
        alert("Failed to login.");
    }
};

function login() {
    var username = document.getElementById('username').value;
    var password = document.getElementById('password').value;
    var rememberMeState = document.getElementById ("rememberMe").checked;
    if (username === "" || password === ""){
        alert("Username and password are required");
        return;
    }
    if (isChallenged){
        userLoginChallengeHandler.submitChallengeAnswer({'username':username, 'password':password, rememberMe: rememberMeState});
    } else {
        WLAuthorizationManager.login(securityCheckName,{'username':username, 'password':password, rememberMe: rememberMeState}).then(
            function () {
                WL.Logger.debug("login onSuccess");
            },
            function (response) {
                WL.Logger.debug("login onFailure: " + JSON.stringify(response));
            });
    }
}

function logout() {
WLAuthorizationManager.logout(securityCheckName).then(
    function () {
        WL.Logger.debug("logout onSuccess");
        location.reload();
    },
    function (response) {
        WL.Logger.debug("logout onFailure: " + JSON.stringify(response));
    });
}

return userLoginChallengeHandler;

};

その後、私の mfpdev アプリのプレビューから、常にこのエラー Uncaught TypeError: WL.Client.createSecurityCheckChallengeHandler is not a function at (compiled_code) がスローされます

不足している構成はありますか? または、このメソッドは廃止されました (WL.Client からすべてのメソッドをログに記録しただけで、このメソッドが欠落しているため)。また、ナレッジ センターのすべての API ドキュメントがどこにあるのかわかりません。欠落している URl はありますか?

4

4 に答える 4

1

mf8 開発者サーバー (mfp-app-scaffolds-cordova) のサンプル アプリには、7.1 メソッドの cordova-plugin-mfp がありました。mf のすべてのプラグインを削除し、cordova plugin add cordova-plugin-mfp を使用して手動で追加するだけです。

于 2016-07-21T20:42:55.670 に答える
0
  1. CLI プレビュー機能を使用してブラウザーでアプリをプレビューしようとすると、OAuth フローは現在機能しません。今のところ、エミュレータまたは物理デバイスを使用してください

  2. ダウンロードしたサンプルが不明です。コンソールからのサンプルは、コードのように見えます。これは何ですか?

  3. これが Cordova サンプルであると仮定すると、wlCommonInit 関数から API を呼び出す必要があります。

  4. チュートリアルを読みましたか?https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/all-tutorials/

于 2016-07-16T04:09:42.327 に答える
-2

リンクを参照してください https://github.com/MobileFirst-Platform-Developer-Center/PinCodeCordova/blob/98f8f38bf7dbdc30b8c8b9837a9b826e44f15926/www/js/ChallengeHandler.js

例では

WL.Client.createWLChallengeHandler("PinCodeAttempts")

それ以外の

WL.Client.createSecurityCheckChallengeHandler("PinCodeAttempts")
于 2016-09-26T13:54:34.827 に答える