15

是否可以使用内置的 iOS 6 Facebook 集成来获取用户的基本信息(电子邮件地址、生日等)?我看到的所有文档/示例都使用 iOS 6 集成来简单地打开一个SLComposeViewController.

感谢您的时间。

4

2 回答 2

31

请查看我的示例项目。它允许您将视频上传到 Facebook,但它还包括一种获取信息的方法,您应该查看文件ViewController.m,在选项卡控制器中注明“Native”。

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

您将需要导入SocialAccounts框架来执行您想要的操作。您从 请求访问用户 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);

    }];

}
于 2012-10-15T21:14:24.080 回答
0

https://github.com/jonasman/JNFacebook 下载

 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];
        }
    });
于 2014-11-14T15:25:12.947 回答