2014-10-29 81 views
0

我已经更新了图Api的版本到v2。现在我面临的问题是,当我执行以下代码它显示我空数组:用户好友在Facebook上显示空列表Sdk Graph Api v2

FBRequest *friendsRequest = [FBRequest requestForMyFriends]; 
     [friendsRequest startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *result, NSError *error) { 
      NSArray *friendshipid; 
      NSString *username; 
      if (!error) { 
       NSLog(@"friends = %@", [result description]); 

      } 
      if (completion) { 
       completion(friendshipid, username, error); 
      } 
     }]; 
    } 
} 

我才知道,Facebook的SDK已经为用户朋友们的一些变化,现在它已采取许可对于user_friends,但我不知道在哪里进行更改,要求许可user_friends

+0

不赞成这种方式在V2.1中,如果u [R从Facebook下载示例项目,尝试friendpickersample或scrumptos – 2014-10-29 06:34:42

+0

非常感谢,我只是JAVE看看的样本项目。 – Purva 2014-10-29 06:41:09

回答

1

您可以使用给定的代码段。在这里,我使用了Social Framework的类来获得Facebook friends。希望它能为你工作。

- (void) connectWithFacebookFriends 
{ 
    ACAccountStore *accountStore = [[ACAccountStore alloc] init]; 

    ACAccountType *accountTypeFacebook = [accountStore accountTypeWithAccountTypeIdentifier: 
    ACAccountTypeIdentifierFacebook]; 

    NSDictionary *options = @{ACFacebookAppIdKey: kFaceBookId, 
           ACFacebookPermissionsKey: @[@"user_friends"], 
           ACFacebookAudienceKey: ACFacebookAudienceFriends 
           }; 

    [accountStore requestAccessToAccountsWithType:accountTypeFacebook 
              options:options 
             completion:^(BOOL granted, NSError *error) 
    { 
     if(granted) { 

      NSArray *accounts = [accountStore 
           accountsWithAccountType:accountTypeFacebook]; 
      ACAccount* facebookAccount = [accounts lastObject]; 
      NSString *acessToken = [NSString stringWithFormat:@"%@",facebookAccount.credential.oauthToken]; 
      NSDictionary *parameters = @{@"access_token": acessToken}; 

      NSURL *feedURL = [NSURL URLWithString:@"https://graph.facebook.com/me/friends"]; 

      SLRequest *feedRequest = 
      [SLRequest requestForServiceType:SLServiceTypeFacebook 
           requestMethod:SLRequestMethodGET 
             URL:feedURL 
            parameters:parameters]; 

      [feedRequest performRequestWithHandler:^(NSData *responseData, 
             NSHTTPURLResponse *urlResponse, NSError *error) 
      { 

       NSString * str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
       DLog(@"%@",str); 


       NSLog(@"Request failed, %@", [urlResponse description]); 
      }]; 
     } else { 
      NSLog(@"Access Denied"); 
      NSLog(@"[%@]",[error localizedDescription]); 

     } 
    }]; 

} 
相关问题