调用setActiveUser会引发错误

调用setActiveUser会引发错误

本文介绍了调用setActiveUser会引发错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将userid分配给用户,我收到错误。我遵循以下步骤。
服务器详细信息。

I am trying assign a userid to user and I am getting error . I am following as steps below.server details.

<realm loginModule="AuthLoginModule" name="AuthRealm">
        <className>com.worklight.integration.auth.AdapterAuthenticator</className>
        <parameter name="login-function" value="AuthAdapter.onAuthRequired"/>
        <parameter name="logout-function" value="AuthAdapter.onLogout"/>
    </realm>
</realms>


        <loginModule name="AuthLoginModule">
        <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
    </loginModule>



    <customSecurityTest name="AuthSecurityTest">
         <test isInternalUserID="true" realm="AuthRealm"/>
     </customSecurityTest>

适配器

    function onAuthRequired(headers, errorMessage){
    errorMessage = errorMessage ? errorMessage : null;

    return {
        authStatus: "credentialsRequired",
        errorMessage: errorMessage
    };
}

function submitAuthentication(username, password){
//  if (username==="user" && password === "password"){

        var userIdentity = {
                userId: username,
                displayName: username,
                attributes: {
                    foo: "bar"
                }
        };

        WL.Server.setActiveUser("AuthRealm", userIdentity);

        return {
            authStatus: "complete"
        };
//  }

//  return onAuthRequired(null, "Invalid login credentials");
}

function getSecretData(){
    return {
        secretData: "Very very very very secret data"
    };
}

function onLogout(){
    WL.Logger.debug("Logged out");
}

适配器xml

<procedure name="submitAuthentication" securityTest="wl_unprotected" />
<procedure name="getSecretData" securityTest="AuthSecurityTest"/>

Android代码:

Android code:

public class MFPInitializer {

Context mContext;
public AndroidChallengeHandler challengeHandler;
private String realm = "AuthRealm";
WLClient client = null;

private static MFPInitializer mfpInitializer = new MFPInitializer();

/* A private Constructor prevents any other
    * class from instantiating.
    */
private MFPInitializer() {
}

/* Static 'instance' method */
public static MFPInitializer getInstance() {
    return mfpInitializer;
}

void mfpConnector(WLClient client) {

    challengeHandler = new AndroidChallengeHandler(realm);
    client.registerChallengeHandler(challengeHandler);

    client.connect(new WLResponseListener() {
        @Override
        public void onSuccess(WLResponse wlResponse) {
            Log.d("Success--- MFP_connect", wlResponse.getResponseText());

        }

        @Override
        public void onFailure(WLFailResponse wlFailResponse) {
            Log.d("fail-- MFP_connect", wlFailResponse.getErrorMsg());
        }
    });
}

public void logout() {
    if (client != null) {
        client.logout(realm, new WLRequestListener() {
            @Override
            public void onSuccess(WLResponse wlResponse) {

            }

            @Override
            public void onFailure(WLFailResponse wlFailResponse) {

            }
        });
    }

}

public WLClient mfpInit(Context context) {
    mContext = context;

    try {
        client = WLClient.createInstance(context);
        if (client != null) {
            mfpConnector(client);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return client;
}

public static void registerUser() {

    try {
        URI adapterPath = new URI("/adapters/AuthAdapter/getSecretData");

        WLResourceRequest request = new WLResourceRequest(adapterPath, WLResourceRequest.GET);

        request.setQueryParameter("params", "[]");
        request.send(new WLResponseListener() {
            @Override
            public void onSuccess(WLResponse wlResponse) {
                Log.d("onsuccess--------", wlResponse.getResponseText());
            }

            @Override
            public void onFailure(WLFailResponse wlFailResponse) {
                Log.d("onfail--------", wlFailResponse.getErrorMsg());
            }
        });

    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

}

}

Android挑战处理程序

Android challenge Handler

public class AndroidChallengeHandler extends ChallengeHandler {
//    private Activity parentActivity;
    private WLResponse cachedResponse;


    public AndroidChallengeHandler( String realm) {
        super(realm);
//        parentActivity = activity;
    }

    @Override
    public void onFailure(WLFailResponse response) {
        try {
            submitFailure(response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onSuccess(WLResponse response) {
        submitSuccess(response);
    }

    @Override
    public boolean isCustomResponse(WLResponse response) {
        try {
            if(response!= null &&
                    response.getResponseJSON()!=null &&
                    !response.getResponseJSON().isNull("authStatus") &&
                    response.getResponseJSON().getString("authStatus") != ""){
                return true;
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return false;
    }

    @Override
    public void handleChallenge(WLResponse response){
        cachedResponse = response;
        Log.d( "handleChallenge: ---- ",response.getResponseText());
        try {
            if(response.getResponseJSON().getString("authStatus").equals("credentialsRequired")){
//                MainAdapterBasedAuth.setMainText("handleChallenge->credentialsRequired");
//                Intent login = new Intent(parentActivity, LoginAdapterBasedAuth.class);
//                parentActivity.startActivityForResult(login, 1);
            }
            else if(response.getResponseJSON().getString("authStatus").equals("complete")){
                Log.d( "handleChallenge: ---- ",response.getResponseText());
                submitSuccess(cachedResponse);
            }
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void submitLogin( String userName, String password){

        Object[] parameters = new Object[]{userName, password};
        WLProcedureInvocationData invocationData = new WLProcedureInvocationData("AuthAdapter", "submitAuthentication");
        invocationData.setParameters(parameters);
        WLRequestOptions options = new WLRequestOptions();
        options.setTimeout(30000);
        submitAdapterAuthentication(invocationData, options);

    }

}

Intally in activity 1我打电话,它将初始化wlclient并添加领域。

Intally in activity 1 a I am calling, which will initialize wlclient and adding realm.

 MFPInitializer.getInstance().mfpInit(getApplicationContext());

但是当我尝试在移动第一平台上提交setuser到设备的登录时,我的应用程序崩溃

But when I am trying to submit the login to setuser to device in mobile first platform my app crashes

MFPInitializer mfpInitializer = MFPInitializer.getInstance();

MFPInitializer mfpInitializer= MFPInitializer.getInstance();

mfpInitializer.challengeHandler.submitLogin("user","Passcode");

我收到以下错误

on android monitor。

on android monitor.

ava.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.worklight.wlclient.WLRequest.shouldFailOnChallengeCancel()' on a null object reference
    An error occurred while invoking procedure  [project _MFP]AuthAdapter/submitAuthenticationFWLSE0100E:  parameters: [project _MFP]
Cannot change identity of an already logged in user in realm 'AuthRealm'. The application must logout first.
FWLSE0101E: Caused by:  [pro

上述错误已解决,但新的用户ID没有得到更新在mobilefirst控制台。

The above mentioned error got resolved but the new userid is not getting updated In the mobilefirst console.

你可以帮助我在我犯错的地方。

Can you please help me where I am doing mistake.

推荐答案

如评论中所述,此问题已通过从IBM Fix Central网站更新到最新的可用iFix版本得到解决。

As mentioned in the comments, this problem was resolved by updating to the latest available iFix release from the IBM Fix Central website.

这篇关于调用setActiveUser会引发错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 19:43