Facebook API の叩き方

前回のエントリでいまいちできてなかったんだけど、一応ポストに成功したのでメモ。

前回足りなかったのはパーミッションの設定。public stream にポストを流すには、publish_stream パーミッションが必要。なので

_permissions =  [[NSArray arrayWithObjects:@"publish_stream", @"read_stream", @"offline_access",nil] retain];

こんな感じに設定してログインする。

GraphAPIはよくわかんなかったから、REST APIを使うことにした。

stream.publish

ここ。どうやらmessageさえ埋まってればポストできそうなので、

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"テストメッセージ", @"message",nil];
[_facebook requestWithMethodName:@"stream.publish"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];

こんな感じで呼び出せばポストできた。

前回調べるって書いた、一度認証したらそれを保存しておいて、二度と認証画面を出さない方法。facebook のSDKだとFacebookアプリを立ち上げて認証してOKを押すと、URLスキーマでもとのアプリをパラメータ付きで呼び出してくる。

そのパラメータの中にアクセストークンと有効期限が入っているよう。そいつを保存しておいて、次からは保存したアクセストークンと有効期限を設定すると良いみたい。

FBSessionDelegate の fbDidLogin にて保存

保存

[[NSUserDefaults standardUserDefaults]setObject:_facebook.accessToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults]setObject:_facebook.expirationDate forKey:@"expiredate"];
[[NSUserDefaults standardUserDefaults]synchronize];

設定は _facebookをalloc Initした直後ぐらいに、

NSString *accessKey =  [[NSUserDefaults standardUserDefaults]objectForKey:@"token"];
NSDate *expdate =  [[NSUserDefaults standardUserDefaults]objectForKey:@"expiredate"];
if (accessKey){
_facebook.accessToken = accessKey;
_facebook.expirationDate = expdate;
}

そんな感じでオッケーみたい。

ちなみに、facebookErrDomainerror 506 は多分デュプリケートメッセージ。同じメッセージを連投するとでるんだとおもう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中