Facebook APIバージョン v2.0 が非推奨間近*1のため尻に火が点いている。
消火活動で代替処理がわかったっぽいので記録。
(追記:2016/07/21 22:13) 3.x のログイン(ログアウト)時の処理の認識が間違っていたので修正。
仮にログイン時にNavigationControllerにPushするような実装をしていたら「画面を戻ろうとしているのに戻れない」現象が発生するはず。
改修内容
#import <FacebookSDK/FacebookSDK.h>
@interface TheViewController : UIViewController<FBLoginViewDelegate>
@end
@interface TheViewController()
@property (nonatomic) FBLoginView* loginView;
@end
@implementation TheViewController
- (void)viewDidLoad{
self.loginView = [[FBLoginView alloc] init];
}
- (void)viewDidAppear:(BOOL)animated{
CGRect bounds = [UIScreen mainScreen].bounds;
CGRect rect = self.loginView.frame;
rect.origin.x = (bounds.size.width - rect.size.width) / 2.0;
rect.origin.y = (bounds.size.height - rect.size.height) / 2.0;
self.loginView.frame = rect;
self.loginView.delegate = self;
self.loginView.readPermissions = @[@"public_profile", @"read_stream"];
[self.view addSubView:self.loginView];
}
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user{
}
-(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView{
}
-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView{
}
@end
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
@interface TheViewController : UIViewController<FBSDKLoginButtonDelegate>
@end
@interface TheViewController()
@property (nonatomic) FBLoginView* loginView;
@property (nonatomic) BOOL isLoggedIN;
@end
@implementation TheViewController
- (void)viewDidLoad{
self.loginView = [[FBLoginView alloc] init];
}
- (void)viewDidAppear:(BOOL)animated{
self.fbLoginButton.center = self.view.center;
self.fbLoginButton.delegate = self;
self.fbLoginButton.readPermissions = @[@"public_profile", @"read_stream"];
[self.view addSubView:self.fbLoginButton];
if([FBSDKAccessToken currentAccessToken]) {
} else {
}
}
-(BOOL)loginButtonWillLogin:(FBSDKLoginButton *)loginButton{
return YES;
}
-(void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error {
if (error) {
return;
}
if (result.isCancelled) {
return;
}
if ([result.declinedPermissions containsObject:@"required permission"]) {
return;
}
}
-(void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton{
}
@end