Xcode 4.5 でアプリケーションを作成しました。これには、Facebook のログイン プロセス、友人とその基本情報のクエリ、およびいくつかのニュースフィード公開プロセスが正常に組み込まれています。ただし、特定の Facebook オブジェクト (この場合は写真) を「いいね」した友人をクエリしようとすると問題が発生します。これまでに行ったことは次のとおりです。
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI メソッドで次の権限を要求しました:user_about_me、read_friendlists、friends_likes、read_stream、friend_likes、user_likes、friends_photos、user_photos。
私は Facebook に行って、Facebook の友達の何人かが気に入っている写真を見つけました。次に、 https://graph.facebook.com/?ids=https://wwwにアクセスして、写真の ID を調査しました。urlToFBPhoto
次のクエリ コードを使用しました (このようなクエリに関する Facebook 開発者ページ: urlに従って) SELECT user_id FROM like WHERE object_id="10152365284110475".
このクエリから得られたデータの NSLog を実行すると、写真のように知っている数人の友人の uid が得られることを期待していました。しかし、代わりに、クエリはまったく結果を返しませんでした。
わかりやすくするために、使用した完全なクエリ コードを次に示します。
- (IBAction)getFriendLikes:(id)sender
NSString *objectID = @"10152365284110475"; //object id of a friend's FB photo
NSString *query = [NSString stringWithFormat:
@"{"
@"'friendlikes':'SELECT user_id FROM like WHERE object_id=%@'," //no data
//@"'friends':'SELECT uid2 FROM friend WHERE uid1 = me()'," //returns data
//@"'friendinfo':'SELECT uid, name, sex, pic_big, pic_square FROM user WHERE uid IN
//(SELECT uid2 FROM #friends)'," //returns data
@"}",objectID];
NSDictionary *queryParam = [NSDictionary dictionaryWithObjectsAndKeys:
query, @"q", nil];
[FBRequestConnection startWithGraphPath:@"/fql"
parameters:queryParam
HTTPMethod:@"GET"
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if (error) {
NSLog(@"Error: %@", [error localizedDescription]);
} else {
NSLog(@"Result: %@", result);
}
NSArray *friendInfo = (NSArray *) [[[result
objectForKey:@"data"]
objectAtIndex:1]
objectForKey:@"fql_result_set"];
[DataController dc].fbArray = nil;
[DataController dc].fbArray = friendInfo;
//post callback tasks
} ];
}
誰かが何か助けを提供できるなら、私はそれを大いに感謝します!