自分のiphoneアプリに Facebook ios sdk を導入する

【手始めに】
http://developers.facebook.com/docs/guides/mobile からiOSのリンクへ... https://github.com/facebook/facebook-ios-sdk
にすすみ、README.mdownの通りに実行

  1. gitでダウンロード
  2. サンプルの実行
  3. で自分のアプリに導入

※準備としてFacebookにアプリ登録しておく、そのアプリIDとか使う。


【アプリに導入】

  1. src/facebook-ios-sdk.xcodeprojを開く
  2. 中にあるFBConnectを自分のアプリにコピー
  3. 使いたいコードに #import "FBConnect.h" を記述
  4. .hにFacebook* facebook、.mにfacebook = [[Facebook alloc] initWithAppId:appId];で初期化して使用する

※appIDは、@implementationの外で、static NSString* appId = とかして登録しておくと便利?(サンプルのマネ) 


【認証設定】

  1. .plistに項目を追加
  2. keyの"Information Property List"の下に"URL types"を追加
  3. 続いて"URL types" > "Item0" > "URL Schemes" > "Item0"、なければこのように追加していく
  4. 最後の"Item0"の valueに "fb[appId]"を追加、appIdはいつも通り
  5. AppDelegateに- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url を追加
  6. 最後に、 Facebook* facebook = [[Facebook alloc] initWithAppId:appId];と [facebook authorize:permissions delegate:self];を追加
  7. permissions = [[NSArray arrayWithObjects:@"read_stream", @"offline_access",nil] retain]; のようにArrayでinitとかで初期化しておく
  8. 概要のヘッダーにをする

※5のメソッドは、FacebookアプリオブジェクトのhandleOpenURLを返すもの?
※6で、permissionsはFacebook.mの実際のメソッドを見れば書いてある。
 参考URL: リファレンス - Facebookログイン - ドキュメンテーション - 開発者向けFacebook 上の"read_stream", "publish_stream", or "offline_access"
 read_stream⇒友達を見る権限は利用できない。自分のニュースフィールドを読むだけってこと、ニュースフィールドの検索はできる
 publish_stream⇒自分と友達のコンテンツに投稿可能、オフラインアクセスを必要とせずにいつでもpublic、ユーザーがスタートした後が推奨されている...意味不明...
 offline_access⇒ユーザに変わって認証する。デフォルトで、期限切れになったアクセストークンを許可していくってこと?意味不明
 この3つだけかは不明?


【Single Sign-Onの話】あっているかは不明
最近、新しい認証システムにアップデートされたらしい。
  ■マルチタスクをサポートしているiOSで、FacebookAPPのバージョンが3.2.3以上の場合
   認証には、Facebookアプリ内で認証ダイアログを開く。
   ユーザー承認または非承認後、Facebookアプリは、認可トークン、有効期限、
   FacebookにOAuthの他のパラメータを渡して、呼び出し元のアプリケーションにリダイレクトする。


  ■マルチタスクをサポートしているiOSで、FacebookAPPのバージョンが3.2.3以下の場合
   認証には、サファリで認証ダイアログを開く。
   ユーザー承認または非承認後、Safariは、呼び出し元のアプリケーションにリダイレクトする。
   Facebookアプリベースの認証と同様に、Safariのクッキーを使用して同じFacebookセッションを共有し
   複数のアプリケーションを使用できる。


  ■マルチタスクをサポートしていないiOSでは
   UIWebViewをポップアップさせる古いメカニズムを使用し、ログインしてアクセスを許可するユーザーにメッセージを表示します。
   FBSessionDelegateは、アプリケーションに成功ログインまたはログアウトを呼び出す必要があるコールバックです。


API コール いえーイ!】

  • Facebook Graph API(グラフAPI - ドキュメンテーション - 開発者向けFacebookが詳細)、これで取得する!超単純は訳。
  • request()メソッドに、グラフパスを渡すことによって、Graph APIにアクセスすることができる。
  • その前に、概要ファイルにはを設定しておく。
  • サーバーの応答は、JSON文字列の形式になる。
  • JSON文字列の結果を解析するために、オープンソースJSONライブラリ(http://code.google.com/p/json-framework/)を使用する。
  • 構文解析エラーが発生した場合は、デリゲート一つrequest:didFailWithError:にコールバックする。
  • 成功した場合は、デリゲートrequest:didLoad:にコールバックする。
  • 結果が一つであればNSDictionary、複数の結果が得られている場合、デリゲートに渡された結果は、NSArrayになる。

例えば、ログインしたユーザーの情報が知りたければ
[facebook requestWithGraphPath:@"me" andDelegate:self]; を書き

  • (void)request:(FBRequest *)request didLoad:(id)result {で取得する