Querying Facebook user data through new iOS6 social framework

后端 未结 6 2035
轮回少年
轮回少年 2020-12-28 10:41

I am trying to query information about a user using iOS 6\'s new Facebook integration API. This is the code I\'m using, which is basically identical to what they demoed at W

6条回答
  •  攒了一身酷
    2020-12-28 10:50

    OK here is how I do this integration with iOS 6 and get what I want from Facebook:

    In AppDelegate I do this:

    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {
        return [FBSession.activeSession handleOpenURL:url];
    }
    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
        [FBSession.activeSession handleDidBecomeActive];
    }
    
    - (void)applicationWillTerminate:(UIApplication *)application
    {
        [FBSession.activeSession close];
    }
    

    and in my ViewController where I want to retrieve information about myself or my friends I do this (NOTE: this is a test, so it is a lot of permissions!):

    NSArray *permissions =
        [NSArray arrayWithObjects:@"email", @"user_location",
         @"user_birthday",
         @"user_likes", @"user_interests",@"friends_interests",@"friends_birthday",@"friends_location",@"friends_hometown",@"friends_photos",@"friends_status",
         @"friends_about_me", @"friends_birthday", @"friends_hometown", @"friends_interests", @"friends_likes", @"friends_location", nil];
    
        [FBSession openActiveSessionWithReadPermissions:permissions
                                           allowLoginUI:YES
                                      completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                          /* handle success + failure in block */
                                          if (status) {
                                              NSLog(@"Facebook Read Permission is successful!");
                                              [self presentPostOptions];
    
                                              //   [self presentPostOptions];
    
    
                                          }
                                      }];
    

    Then in "presentPostOptions" I do this (in this example I try to retrieve something from my friend):

    - (void)presentPostOptions
    {
    
        [[FBRequest requestForMyFriends] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary *user, NSError *error)
    
         {
    
             if (!error) {
    
    NSArray *data = [user objectForKey:@"data"];
                 NSLog(@"%d", [data count]);
                 for (FBGraphObject *friend in data) {
                     NSLog(@"%@", [friend first_name]);
                     NSLog(@"%@", [friend last_name]);
                     NSLog(@"%@", [friend id]);
                     //make sure you have FBProfilePictureView outlet in your view
                     //otherwise skip the profile picture!
                     self.fbProfilePic.profileID = @"you'r friend's profile.id";
    
                 }
             }
             else
             {
                 NSLog(@"error");
                 //  [self didFailWithError:error];
             }
         }];
    

    I don't know what else you want to do because in your question you just tried to make a connection but this way you can do what ever you want while you are integrated in iOS 6.

    One more thing, make sure about your App Settings over Facebook and the configs over there like enable your app for iOS and the ID for iPhone/iPad. Also the FacebookAppID in your plist.

    Let me know if it works out for you,

    EDIT: btw my Facebook SDK is 3.1.1.

提交回复
热议问题