2013-10-30 121 views
1

我是iOS的初学者。我正在尝试创建一个应用程序,并引用了很多帖子在stackoverflow和其他一些网站,我用下面的代码来访问Facebook帐户。从Facebook阅读信息

AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; 

if (appDelegate.session.isOpen) { 
    [appDelegate.session closeAndClearTokenInformation]; 

} else { 
    if (appDelegate.session.state != FBSessionStateCreated) { 
     appDelegate.session = [[FBSession alloc] init]; 
    } 
    [appDelegate.session openWithCompletionHandler:^(FBSession *session, 
                FBSessionState status, 
                NSError *error) { 
    }]; 
} 

之后,在函数中,我使用下面的代码来访问用户的Facebook细节。

if (FBSession.activeSession.isOpen) { 
    [[FBRequest requestForMe] startWithCompletionHandler: 
    ^(FBRequestConnection *connection, 
     NSDictionary<FBGraphUser> *user, 
     NSError *error) { 
     if (!error) { 
      _FirstName.text = user.first_name; 
      regisrationdetails.fbid = user.id; 
      _LastName.text=user.last_name; 
      _EmailAddress.text=user.email; 
      NSArray *locationarray=[[NSArray alloc]initWithObjects:user.location,nil]; 
      _City.text=[locationarray objectAtIndex:1]; 
      NSLog(@"%@",user.first_name); 

     } 
    }]; 

正在显示没有错误,但我不能从Facebook获取信息的文本fields.If人擅长此道知道如何访问这些信息,那么请帮助我。

回答

1
- (IBAction)getMeButtonTapped:(id)sender { 
if(!_accountStore) 
    _accountStore = [[ACAccountStore alloc] init]; 

ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

[_accountStore requestAccessToAccountsWithType:facebookTypeAccount 
             options:@{ACFacebookAppIdKey: @"571438296262222", ACFacebookPermissionsKey: @[@"email"]} 
            completion:^(BOOL granted, NSError *error) { 
             if(granted){ 
              NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount]; 
              _facebookAccount = [accounts lastObject]; 
              NSLog(@"Success"); 

              [self me]; 
             }else{ 
              // ouch 
              NSLog(@"Fail"); 
              NSLog(@"Error: %@", [error localizedDescription]); 
             } 
            }]; 
} 

- (void)me 
{ 
NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"]; 

SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook 
              requestMethod:SLRequestMethodGET 
                URL:meurl 
              parameters:nil]; 

merequest.account = _facebookAccount; 

[merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
    NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 

    NSLog(@"%@", meDataString); 

}];} 

使用此希望这可以帮助你,也增加社会框架以及核算框架

+0

什么是_accountStore ...? – Spidy

+0

您的帐户信息存储在哪里,例如ACAccountStore –

1

试试这个..

- (void)fetchFacebookUserInfo { 

    if (FBSession.activeSession.isOpen) { 

    [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, 
                  id<FBGraphUser> user, 
                  NSError *error) { 
     if (!error) { 
      NSString *name = user.name; 
      NSString *userName = user.username; 
      NSString *firstName = user.first_name; 
      NSString *lastName = user.last_name; 
      NSString *email1 = [user objectForKey:@"email"]; 
      NSString *birthday1 = user.birthday; 
      NSString *locale = [user objectForKey:@"locale"]; 
      NSString *location = [user.location objectForKey:@"name"]; 

     } 

    }]; 
}