Search code examples
javagigya

How to implement a Sign in function by using Gigya API in JAVA?


I am trying to delete the accounts from Gigya DB, so we can reuse them to test our login function through Gigya. It seems the UID required for deletion come from login, so how am I suppose to do it in Java?


Solution

  • As mentioned by Ilan, firstly you'll need to include the Gigya Java SDK.

    You can then look up the UID using either the Identity Access or Identity Query Tool within Gigya console and use the follow code to delete the account:

    // delete user record
    GSRequest deleteAccountRequest = new GSRequest(apiKey, secretKey, "accounts.deleteAccount");
    //deleteAccountRequest.setAPIDomain("eu1.gigya.com");  // enable this if you're using the EU data centre
    deleteAccountRequest.setUseHTTPS(true);
    deleteAccountRequest.setParam("UID", uid);
    GSResponse deleteAccountResponse = deleteAccountRequest.send();
    if(deleteAccountResponse.getErrorCode()==0)
    {     
    } 
    else 
    {  
        System.out.println("deleteAccountResponse failure: " + deleteAccountResponse.getLog());
    }
    

    Alternatively, if you want to delete users in batch, you can run a search using accounts.search and delete all the users within the results set:

    int limit = 100;
    String query = "select UID from accounts where ... " + limit; // add your query here i.e. email = 'someone@example.com'
    String cursorId = ""; 
    int objectsCount = limit;
    
    GSRequest searchRequest;
    ArrayList<String> uidList = new ArrayList<String>();
    
    // send request
    do 
    {
        // check if we have an open cursor
        if(cursorId.length() > 0)
        {
            // run next request in cursor
    
            // set up request
            searchRequest = new GSRequest(apiKey, secretKey, "accounts.search");
            //searchRequest.setAPIDomain("eu1.gigya.com");
            //searchRequest.setUseHTTPS(true);
    
            // set timeout
            searchRequest.setParam("timeout", 60000);
    
            // set cursor id
            searchRequest.setParam("cursorId", cursorId);
        } else {
            // run new request and open cursor
    
            // set up request
            searchRequest = new GSRequest(apiKey, secretKey, "accounts.search");
            //searchRequest.setAPIDomain("eu1.gigya.com");
            //searchRequest.setUseHTTPS(true);
    
            // set timeout
            searchRequest.setParam("timeout", 60000);
    
            // set query
            searchRequest.setParam("query", query);
    
            // open cursor
            searchRequest.setParam("openCursor", true);
        }
    
        GSResponse searchResponse = searchRequest.send();
        if(searchResponse.getErrorCode()==0)
        {     
            GSArray uids = new GSArray();
            uids = searchResponse.getArray("results", uids);
            for(int i=0; i<uids.length(); i++)
            {
                String uid;
                try {
                    // retrieve uid and add to list of uids
                    uid = uids.getObject(i).getString("UID");
                    uidList.add(uid);
    
                } catch (GSKeyNotFoundException e) {
                }
    
            }
    
            cursorId = searchResponse.getString("nextCursorId", "");
            objectsCount = searchResponse.getInt("objectsCount", 0);
        } 
        else 
        {  
            System.out.println("searchRequest failure: " + searchResponse.getLog());
        } 
    } 
    while (objectsCount >= limit);
    
    for(int i=0; i<uidList.size(); i++)
    {
        String uid;
        try {
            uid = uidList.get(i);
    
            // delete user record
            GSRequest deleteAccountRequest = new GSRequest(apiKey, secretKey, "accounts.deleteAccount");
            //deleteAccountRequest.setAPIDomain("eu1.gigya.com");
            deleteAccountRequest.setUseHTTPS(true);
            deleteAccountRequest.setParam("UID", uid);
            GSResponse deleteAccountResponse = deleteAccountRequest.send();
            if(deleteAccountResponse.getErrorCode()==0)
            {     
            } 
            else 
            {  
                System.out.println("deleteAccountResponse failure: " + deleteAccountResponse.getLog());
            }
    
        } catch (Exception e) {
        }
    
    }