iOS での FB ログインに関するFacebook 独自のチュートリアル(Objective-C)に従っていましたが、ログインするたびに、最初の許可認証画面の後、悪名高い「このアプリは既に認証されています」という WebView が表示されます。
たくさんの投稿を読みましたが、整理できなかったため、(再)投稿です。アプリにはボイラープレートのログインコード以外はまったく何もないため、これはかなり奇妙だと思います。この動作は、シミュレータと実際のデバイスの両方で発生します。
このアプリは iOS 9.0 用で、FBSDK 4.7.1 を使用しています (CocoaPods 経由でインストール):
pod 'FBSDKLoginKit', '~> 4.6'
コード自体はかなり定型的なものです。これが私の AppDelegate.m です。
#import "AppDelegate.h"
#import <FBSDKCoreKit/FBSDKCoreKit.h>
@interface AppDelegate ()
@end
@implementation AppDelegate
- (void)applicationDidBecomeActive:(UIApplication *)application {
[FBSDKAppEvents activateApp];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
@end
そして私のViewController.m:
#import "ViewController.h"
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"];
[loginButton setLoginBehavior:FBSDKLoginBehaviorSystemAccount]; // No difference
loginButton.center = self.view.center;
[self.view addSubview:loginButton];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Info.plist のスクリーンショット:
最後に、コンソールに次の 2 つのエラーも表示されます。
2015-11-24 11:50:42.855 lixo[26941:389756] -canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
2015-11-24 11:50:42.860 lixo[26941:389756] -canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
私が読んだことから、LSApplicationQueriesSchemesがInfo.plistに設定されている場合、これは安全に無視できます。
これを回避する方法はありますか?