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

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

感谢您的宝贵时间。

【问题讨论】:

    标签: iphone objective-c facebook ios6


    【解决方案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 几乎解决了,但没有找到任何对我来说很好的答案。我的问题通过重置模拟器内容和设置解决了。
    • 运作良好。如果没有,请按照我在这篇文章中的回答:stackoverflow.com/questions/12539549/…
    • 试试这个链接的正确答案。它对我有用。 stackoverflow.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];
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2012-12-22
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多