2012-10-15 18 views
15

組み込みのiOS 6 Facebook統合を使用して、ユーザーの基本情報(電子メールアドレス、誕生日など)を取得できますか?私が見たドキュメンテーション/例のすべては、単にSLComposeViewControllerを開くためにiOS 6の統合を使用しています。Facebook iOS 6 - ユーザー情報を取得

ありがとうございます。

答えて

31

私のサンプルプロジェクトをチェックしてください。それはあなたが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); 
              } 
             }]; 
} 

GET "私":

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

私は上のコードを使用して、コードが初めてうまく動作します。しかし、次回は、私はfbアカウントのリンクを解除し、再びエラーの下にリンクしている{ エラー= { コード= 190; message = "デバイス上でアクセストークンが無効になっています。 type = OAuthException; }; } – NSCry

+0

@NSIllusionここでアクセストークンの問題を解決しましたか? – user717452

+1

@ user717452ほとんど解決されましたが、私に配線されているような良い答えは見つかりませんでした。私の問題は、シミュレータの内容と設定をリセットすることで解決しました。 – NSCry

0

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]; 
     } 
    }); 
関連する問題