Facebook の iOS SDK を使ってやりたかった事メモ

やりたかった事

・認証する

・投稿する

・ユーザー情報を持ってくる

・認証を解除する

アプリ的には予め認証しておいて何らかのアクション時に投稿をするようなイメージ

読むとこ

Facebook SDK current for iOS Reference

https://developers.facebook.com/docs/reference/ios/current/

・Documentation › iOSiOS SDK Tutorial › 1 - Facebook Login

https://developers.facebook.com/docs/ios/ios-sdk-tutorial/authenticate/

英語で読めない

しかしコード書く→実行したりすると色々とわかったのでメモる

・認証のコード

[objc]

NSArray *permissions = [[NSArray alloc] initWithObjects:

@"publish_stream",nil];

[FBSession openActiveSessionWithPublishPermissions:permissions

defaultAudience:FBSessionDefaultAudienceEveryone

allowLoginUI:YES

completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {

//

[self sessionStateChanged:session state:status error:error];

}

];

[/objc]

・投稿のコード

[objc]

FBRequest *postRequest = [FBRequest requestForPostStatusUpdate:@"test"];

[postRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

DLog(@"error=%@", error);

if(!error){

//

}

}];

[/objc]

・ユーザー情報取得のコード

[objc]

[[FBRequest requestForMe] startWithCompletionHandler:

^(FBRequestConnection *connection,

NSDictionary<FBGraphUser> *user,

NSError *error) {

if (!error) {

DLog(@"%@", user);

}

}];

[/objc]

・ログインしてるかどうかのコード

[objc]

if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {

DLog(@"before.session = FBSessionStateCreatedTokenLoaded");

} else {

DLog(@"before.session = else");

}

[/objc]

・ログアウト

[objc]

[FBSession.activeSession closeAndClearTokenInformation];

[/objc]

基本的APIたたくときはセッションが開いてないと使えないので投稿する時とかユーザー情報取得する時とかはisOpenを使って処理を分けたりしてあげる

[objc]

if([FBSession.activeSession isOpen]){

//

}else{

//

}

[/objc]

あとはブロックにおわった時の処理書けばよさそう.

ざっくり