puedo porque mis etiquetar desde como comentario cierra carga buscar aparecen amigos abrir ios facebook facebook-graph-api pagination next

ios - mis - porque no carga facebook en mi iphone



iOS: busca amigos de Facebook con paginaciĆ³n usando ''siguiente'' (2)

He encontrado todas las respuestas. La mayoría de las respuestas sugiere una paginación basada en URL o una función de llamada recursiva. Podemos hacer esto desde el propio SDK de Facebook.

var friendsParams = "taggable_friends" // Save the after cursor in your data model if let nextPageCursor = user?.friendsNextPages?.after { friendsParams += ".limit(10)" + ".after(" + nextPageCursor + ")" } else { self.user?.friends.removeAll() } let requiredParams = friendsParams + "{id, name, first_name, last_name, picture.width(200).height(200)}" let params = ["fields": requiredParams] let _ = FBSDKGraphRequest(graphPath: "me", parameters: params).start { connection, response, error in if connection?.urlResponse.statusCode == 200 { print("/(response)") // Update the UI and next page (after) cursor } else { print("Not able to fetch /(error)") } }

También puedes encontrar el proyecto de ejemplo aquí

Estoy tratando de buscar la lista de ''taggable_friends'' de Facebook, donde puede haber más de 1000 amigos etiquetables, por lo que Facebook pagina los resultados. Aquí está el método.

-(void)getsFbTaggableFriends:(NSString *)nextCursor dicFBFriends:(NSMutableArray *) dicFriends failure:(void (^) (NSError *error))failureHandler { NSString *qry = @"/me/taggable_friends"; NSMutableDictionary *parameters; if (nextCursor == nil) { parameters = nil; } else { parameters = [[NSMutableDictionary alloc] init]; [parameters setValue:nextCursor forKey:@"next"]; } [FBRequestConnection startWithGraphPath:qry parameters:parameters HTTPMethod:@"GET" completionHandler:^( FBRequestConnection *connection, id result, NSError *error ) { if (error) { NSLog(@"%@", [error localizedDescription]); }else { /* handle the result */ NSMutableDictionary *mDicResult = [[NSMutableDictionary alloc]initWithDictionary:result]; for (NSDictionary * fbItem in [mDicResult valueForKey:@"data"]) { [dicFriends addObject:fbItem]; } // if ''next'' value is found, then call recursively if ([[mDicResult valueForKey:@"paging"] objectForKey:@"next"] != nil) { NSString *nextCursor = mDicResult[@"paging"][@"next"]; NSLog(@"next:%@", [nextCursor substringFromIndex:27]); [self getsFbTaggableFriends:nextCursor dicFBFriends:dicFriends failure:^(NSError *error) { failureHandler(error); }]; } } }]; }

Problema: obtengo los primeros 1000 registros en el objeto ''resultado'' y el valor de la ''siguiente'' se pasa como el parámetro ''parámetros'' para la llamada recursiva. Sin embargo, la segunda iteración no pagina y sigue devolviendo los mismos 1000 registros.

También intenté usar el valor nextCursor como el parámetro startWithGraphPath para la segunda llamada. Resultó en un objeto de respuesta diferente con claves como og_object , share , id lugar de data & paging .

Ayúdenos a obtener apropiadamente los amigos etiquetables página por página, siempre y cuando el valor "siguiente" esté presente en el objeto de respuesta. Gracias.


Utilice el next punto final devuelto (parte de ruta de gráfico, incluido el cursor) como la nueva ruta de gráfico para la solicitud posterior, en lugar de ponerlo como el parámetro.