Fetch Facebook friend list using SLRequest in ios 6.0

后端 未结 2 1741
误落风尘
误落风尘 2021-02-02 02:18

I integrated facebook in ios 6.0 as decribed

How to integrate Facebook in iOS 6 using SLRequest?

But I am not able to fetch the facebook friend list using SLRequ

2条回答
  •  抹茶落季
    2021-02-02 02:38

    -(void)getFacebookFriendsList
    {
        if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
        {
            ACAccountStore *store = [[ACAccountStore alloc] init];
    
            ACAccountType *facebookTypeAccount = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
            //Replace with your Facebook.com app ID
            NSDictionary *options = @{ACFacebookAppIdKey:kFacebookAppID, ACFacebookPermissionsKey:@[@"email", @"read_friendlists"],
                                      ACFacebookAudienceKey:ACFacebookAudienceFriends};
    
            [store requestAccessToAccountsWithType:facebookTypeAccount
                                           options:options
                                        completion:^(BOOL granted, NSError *error){
    
                                            if(granted)
                                            {
                                                NSArray *accounts = [store accountsWithAccountType:facebookTypeAccount];
                                                ACAccount *facebookAccount = [accounts lastObject];
    
                                                NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"];
                                                SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                                                                          requestMethod:SLRequestMethodGET
                                                                                                    URL:meurl
                                                                                             parameters:nil];
                                                merequest.account = facebookAccount;
    
                                                NSURL *requestURL = [NSURL URLWithString:@"https://graph.facebook.com/me/friends"];
    
                                                SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                                                                        requestMethod:SLRequestMethodGET
                                                                                                  URL:requestURL parameters:@{@"fields":@"id, name, email, picture, first_name, last_name, gender, installed"}];
                                                request.account = facebookAccount;
                                                [request performRequestWithHandler:^(NSData *data,
                                                                                     NSHTTPURLResponse *response,
                                                                                     NSError *error) {
                                                    if(!error)
                                                    {
                                                        NSDictionary *list =[NSJSONSerialization JSONObjectWithData:data
                                                                                                            options:kNilOptions
                                                                                                              error:&error];
                                                        if([list objectForKey:@"error"] != nil)
                                                        {
                                                            // if error occured e.g. Invalid Auth etc.
                                                        }
                                                        else
                                                        {
                                                            [self.arrayFriendsList removeAllObjects];
    
                                                            NSArray *dictFbFriend = [list objectForKey:@"data"];
    
                                                            for (NSDictionary *dict in dictFbFriend)
                                                            {
                                                                NSDictionary *pictureDataDict = [[dict objectForKey:@"picture"] objectForKey:@"data"];
    
                                                                Contacts *objContact = [[Contacts alloc] initWithName:[dict objectForKey:@"name"]
                                                                                                             andEmail:nil
                                                                                                         andFirstName:[dict objectForKey:@"first_name"]
                                                                                                          andLastName:[dict objectForKey:@"last_name"]
                                                                                                            andGender:[dict objectForKey:@"gender"] andPhotoPath:[pictureDataDict objectForKey:@"url"]
                                                                                                       andIsInstalled:[dict objectForKey:@"installed"] ? [[dict objectForKey:@"installed"] boolValue] : NO
                                                                                                        andFacebookId:[dict objectForKey:@"id"]
                                                                                        ];
    
                                                                [self.arrayFriendsList addObject:objContact];
                                                                objContact = nil;
                                                            }
    
                                                            NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
                                                            NSArray *descriptors=[NSArray arrayWithObject: descriptor];
                                                            self.arrayFriendsList = (NSMutableArray *)[self.arrayFriendsList  sortedArrayUsingDescriptors:descriptors];
    
                                                        }
                                                    }
                                                    else
                                                    {
                                                        NSLog(@"Error%@", error);
    
                                                        //                                                    [progressHUD hide:YES];
                                                    }
    
                                                    dispatch_async(dispatch_get_main_queue(), ^{
                                                        [progressHUD hide:YES];
                                                        [self.tblFriendsList reloadData];
                                                    });
                                                }];
                                            }
                                            else
                                            {
                                                NSLog(@"Grant Error:%@", error);
    
                                                [progressHUD hide:YES];
    
                                                UIAlertView *alertView = [[UIAlertView alloc]
                                                                          initWithTitle:@"Error"
                                                                          message:@"You need to set up Facebook account on the Settings App."
                                                                          delegate:self
                                                                          cancelButtonTitle:@"OK"
                                                                          otherButtonTitles:nil];
                                                [alertView show];
                                            }
                                        }];
        }
        else
        {
            [progressHUD hide:YES];
    
            UIAlertView *alertView = [[UIAlertView alloc]
                                      initWithTitle:@"Error"
                                      message:@"You need to set up Facebook account on the Settings App."
                                      delegate:self
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
            [alertView show];
        }
    }
    

提交回复
热议问题