Facebook iOS 6 - получить информацию о пользователе

Можно ли использовать встроенную интеграцию iOS 6 Facebook, чтобы получить основную информацию пользователя (адрес электронной почты, день рождения и т.д.)? Вся документация/примеры, которые я видел, используют интеграцию iOS 6, чтобы просто открыть SLComposeViewController.

Спасибо за ваше время.

Ответы

Ответ 1

Пожалуйста, ознакомьтесь с моим примером. Он позволяет загружать видео на Facebook, но также включает в себя способ получения вашей информации, вы должны посмотреть на файл ViewController.m, который был отмечен как "Родной" в контроллере табуляции.

https://bitbucket.org/danielphillips/fb-video-upload

Вам нужно будет импортировать фреймворки Social и Accounts, чтобы делать то, что вы хотите. Вы запрашиваете доступ к учетной записи пользователей Facebook из ACAccountStore, если вам предоставлен доступ, то вы используете эту учетную запись для создания SLRequest с нужными параметрами, здесь вы хотите, чтобы объект графа "/me".

Свойства:

@property (nonatomic, retain) ACAccountStore *accountStore;
@property (nonatomic, retain) ACAccount *facebookAccount;

Аутентифицировать:

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

    ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    [_accountStore requestAccessToAccountsWithType:facebookTypeAccount
                                           options:@{ACFacebookAppIdKey: @"483616868329082", 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);
                                            }
                                        }];
}

Получить "я":

- (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);

    }];

}

Ответ 2

https://github.com/jonasman/JNFacebookDownload

 self.facebookDownload = [JNFacebookDownload new];
 self.facebookDownload.appID = @"380637545425915";

[self.facebookDownload downloadInformation:^(NSDictionary *userInfo, NSError *error) {

    dispatch_async(dispatch_get_main_queue(), ^{

        if (error)
        {
            if (error.code == JNFacebookDownloadNoAccount)
                NSLog(@"No account");
            else if (error.code == JNFacebookDownloadNoPermissions)
                NSLog(@"No permissions");
            else if (error.code == JNFacebookDownloadNoAPPID)
                NSLog(@"No APP ID Configured");
        }
        else
        {
            self.textView.text = [userInfo description];
        }
    });