-1

私は次のグラフAPIリクエストを使用して、特定のオブジェクトが好きなすべての友達を取得しています。

me/?fields=friends.fields(likes.target_id(searched_object_id))

iOSコードは次のとおりです。

[ FBRequestConnection startWithGraphPath: [ NSString stringWithFormat: @"me/?fields=friends.fields(name,likes.target_id(%lld))", 7919071058 ]
                 completionHandler: ^(FBRequestConnection *connection, id result, NSError *error) {
                     [ [ [ result objectForKey: @"friends" ] objectForKey: @"data" ] enumerateObjectsUsingBlock:^(id friend, NSUInteger idx, BOOL *stop) {
                         if ( [ friend objectForKey: @"likes" ] )
                             NSLog( @"%@ also likes that", [ friend objectForKey: @"name" ] );
                     } ];
                 }
 ];

og.likesでも同じことをしたいのですが、残念ながら.target_idは利用できません

詳細については、og.likesはアプリで宣言できるオープングラフオブジェクトです。(https://developers.facebook.com/docs/opengraph/tutorial/

よろしくお願いします

4

1 に答える 1

0

ここでは、og.likesを操作するために変更されたコードに従います

[ FBRequestConnection startWithGraphPath: @"me/?fields=friends.fields(name,og.likes)"
                     completionHandler: ^(FBRequestConnection *connection, id result, NSError *error) {
                         [ [ [ result objectForKey: @"friends" ] objectForKey: @"data" ] enumerateObjectsUsingBlock:^(id friend, NSUInteger idx, BOOL *stop) {
                             [ [ [ friend objectForKey: @"og.likes" ] objectForKey: @"data" ] enumerateObjectsUsingBlock:^(id ogLike, NSUInteger idx, BOOL *stop) {
                                 if ( [ [ [ [ ogLike objectForKey: @"data" ] objectForKey: @"object" ] objectForKey: @"id" ] isEqualToString: [ NSString stringWithFormat: @"%lld", idObject ] ] )
                                     NSLog( @"%@ also og.likes that", [ friend objectForKey: @"name" ] );
                             } ];
                         } ];
                     }
 ];

ご覧のとおり、友達のog.likesをすべて取得してから、それらを繰り返し処理して、一致するものを見つける必要がありました。より多くの帯域幅ですが、機能します。誰かがもっとエレガントな方法を見つけたら、私はまだそれについて興味があります。

よろしく

于 2012-10-16T12:45:19.907 に答える