1

我正在尝试从 Gigya DB 中删除帐户,以便我们可以重用它们来通过 Gigya 测试我们的登录功能。删除所需的 UID 似乎来自登录,那么我想在 Java 中如何做到这一点?

4

1 回答 1

0

正如 Ilan 所说,首先您需要包含 Gigya Java SDK。

然后,您可以使用 Gigya 控制台中的身份访问或身份查询工具查找 UID,并使用以下代码删除帐户:

// 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());
}

或者,如果要批量删除用户,可以使用 accounts.search 运行搜索并删除结果集中的所有用户:

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) {
    }

}
于 2015-05-08T09:40:17.357 回答