在一個Facebook Graph API調用中是否有任何方法檢索或刪除多個Facebook request_id?在多個Facebook request_ids上執行操作
例如,如果用戶從同一應用程序的不同人員收到多個請求,則它們將被分組爲一個通知,並且所有request_ids將在用戶接受通知時以逗號分隔列表的形式傳遞給應用程序。有什麼辦法可以避免必須循環遍歷每一個並單獨檢索/刪除它?
在一個Facebook Graph API調用中是否有任何方法檢索或刪除多個Facebook request_id?在多個Facebook request_ids上執行操作
例如,如果用戶從同一應用程序的不同人員收到多個請求,則它們將被分組爲一個通知,並且所有request_ids將在用戶接受通知時以逗號分隔列表的形式傳遞給應用程序。有什麼辦法可以避免必須循環遍歷每一個並單獨檢索/刪除它?
Binyamin是正確的批處理請求可能會工作。但是,我發現通過request_ids獲取請求數據,您可以簡單地將它們作爲逗號分隔列表傳遞,並避免執行批量請求。
NSString *requestIds = @"123456789,987654321";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:requestIds forKey:@"ids"];
[facebook requestWithGraphPath:@"" andParams:params andDelegate:self];
你最終圖形URL想要的樣子:
https://graph.facebook.com/?ids=REQUEST_ID1,REQUEST_ID2,REQUEST_ID3&access_token=ACCESS_TOKEN
對於刪除操作,我相信仍然需要批量操作。當你從上面的調用中獲取FB的request_id數據時,它將是一個NSDictionary,每個result_id都是一個鍵。您可以查看每個鍵並創建批量操作以將其全部刪除。
NSDictionary *requests = DATA_RETURNED_FROM_FACEBOOK;
NSArray *requestIds = [requests allKeys];
NSMutableArray *requestJsonArray = [[[NSMutableArray alloc] init] autorelease];
for (NSString *requestId in requestIds) {
NSString *request = [NSString stringWithFormat:@"{ \"method\": \"DELETE\", \"relative_url\": \"%@\" }", requestId];
[requestJsonArray addObject:request];
}
NSString *requestJson = [NSString stringWithFormat:@"[ %@ ]", [requestJsonArray componentsJoinedByString:@", "]];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:requestJson forKey:@"batch"];
[facebook requestWithGraphPath:@"" andParams:params andHttpMethod:@"POST" andDelegate:nil];
注意,在一批請求電流限制爲50,每https://developers.facebook.com/docs/reference/api/batch/。所以爲了完全安全,你應該檢查request_ids的數量,如果它大於50,你將不得不做多個批處理請求。
如果我理解正確,可以使用batch request在一次調用中執行多個操作。
例如:
NSString *req01 = @"{ \"method\": \"GET\", \"relative_url\": \"me\" }";
NSString *req02 = @"{ \"method\": \"GET\", \"relative_url\": \"me/friends?limit=50\" }";
NSString *allRequests = [NSString stringWithFormat:@"[ %@, %@ ]", req01, req02];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:allRequests forKey:@"batch"];
[facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self];
它仍然意味着你必須遍歷的通知,但您可以使用一個/兩個請求執行的所有操作。
謝謝。我沒有看到有批量請求。 – stipe108