Facebook iOS 6 - 获取用户信息

Posted

技术标签:

【中文标题】Facebook iOS 6 - 获取用户信息【英文标题】:Facebook iOS 6 - get user info 【发布时间】:2012-10-15 21:11:57 【问题描述】:

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

感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

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

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

您需要导入 SocialAccounts 框架来做您想做的事。您从ACAccountStore 请求访问用户 Facebook 帐户,如果您被授予访问权限,那么您使用此帐户创建一个带有您想要的参数的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);

    ];


【讨论】:

我使用了上面的代码,第一次代码对我来说很好。但是下次当我取消链接 fb 帐户然后再次链接时出现以下错误 error = code = 190; message = "设备上的访问令牌已失效。";类型 = OAuthException; ; @NSIllusion 这里的访问令牌问题解决了吗? @user717452 几乎解决了,但没有找到任何对我来说很好的答案。我的问题通过重置模拟器内容和设置解决了。 运作良好。如果没有,请按照我在这篇文章中的回答:***.com/questions/12539549/… 试试这个链接的正确答案。它对我有用。 ***.com/questions/12601191/…【参考方案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];
        
    );

【讨论】:

以上是关于Facebook iOS 6 - 获取用户信息的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iOS 中的 Facebook SDK 获取用户信息?

如何在 ios 中使用 facebook sdk 4.1 获取用户信息?

在 iOS 8 中无法从 Facebook 获取用户的电子邮件个人信息

如何在 iOS App 中使用 Facebook 登录缓存 Facebook 用户信息

iOS Facebook:使用故事板获取用户数据

从 Facebook iOS 7 获取用户名和头像