Facebook ios SDK 3.5に切り替えて、ユーザーを認証しようとしました
[FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:allowLoginUI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
//callback methods
}];
info.plist ファイルに FacebookAppID、FacebookDisplayName、CFBundleURLSchemes を設定しました。AppDelegate では、次の関数を設定しています。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [FBSession.activeSession handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
BOOL wasHandled = [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication];
// add app-specific handling code here
return wasHandled;
}
そして今、Facebook アカウントが iPhone 自体にログインしているときに、コールバック ブロックを呼び出すことができるようになりました。これは、FBAppCall の新しいルートを使用していると思います。
しかし、問題は、iPhone FB アカウントをセットアップしないと、アプリがサファリ Web ビューまたは FB アプリを使用して認証を試み、サファリまたはアプリでアクセス許可ボタンを押した後、アプリが呼び出され、イメージを起動しますが、そこでハングアップするだけで、コールバック ブロックが呼び出されることはありません。これはopenurlを処理するアプリケーションの別のルートだと考えていますが、
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
ブレークポイントで停止することはありません。