Facebook の iOS SDK を使ってやりたかった事メモ
やりたかった事
・認証する
・投稿する
・ユーザー情報を持ってくる
・認証を解除する
アプリ的には予め認証しておいて何らかのアクション時に投稿をするようなイメージ
読むとこ
・Facebook SDK current for iOS Reference
https://developers.facebook.com/docs/reference/ios/current/
・Documentation › iOS › iOS 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) {
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]
あとはブロックにおわった時の処理書けばよさそう.
ざっくり