自分のiphoneアプリに Facebook ios sdk を導入する
【手始めに】
http://developers.facebook.com/docs/guides/mobile からiOSのリンクへ... https://github.com/facebook/facebook-ios-sdk
にすすみ、README.mdownの通りに実行
- gitでダウンロード
- サンプルの実行
- で自分のアプリに導入
※準備としてFacebookにアプリ登録しておく、そのアプリIDとか使う。
【アプリに導入】
- src/facebook-ios-sdk.xcodeprojを開く
- 中にあるFBConnectを自分のアプリにコピー
- 使いたいコードに #import "FBConnect.h" を記述
- .hにFacebook* facebook、.mにfacebook = [[Facebook alloc] initWithAppId:appId];で初期化して使用する
※appIDは、@implementationの外で、static NSString* appId = とかして登録しておくと便利?(サンプルのマネ)
【認証設定】
- .plistに項目を追加
- keyの"Information Property List"の下に"URL types"を追加
- 続いて"URL types" > "Item0" > "URL Schemes" > "Item0"、なければこのように追加していく
- 最後の"Item0"の valueに "fb[appId]"を追加、appIdはいつも通り
- AppDelegateに- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url を追加
- 最後に、 Facebook* facebook = [[Facebook alloc] initWithAppId:appId];と [facebook authorize:permissions delegate:self];を追加
- permissions = [[NSArray arrayWithObjects:@"read_stream", @"offline_access",nil] retain]; のようにArrayでinitとかで初期化しておく
- 概要のヘッダーに
をする
※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 {で取得する