前回のエントリでいまいちできてなかったんだけど、一応ポストに成功したのでメモ。
前回足りなかったのはパーミッションの設定。public stream にポストを流すには、publish_stream パーミッションが必要。なので
_permissions = [[NSArray arrayWithObjects:@"publish_stream", @"read_stream", @"offline_access",nil] retain];
こんな感じに設定してログインする。
GraphAPIはよくわかんなかったから、REST APIを使うことにした。
ここ。どうやら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 は多分デュプリケートメッセージ。同じメッセージを連投するとでるんだとおもう。