1

ここで議論されているのと同じ問題があります。最終的に見つかった解決策は、plist ファイルの URL スキームを壊して、Facebook にログインするときにアプリを離れて Safari に移動するのではなく、アプリ内の Web ビューからログインすることでした。ただし、これは、Safari のようにユーザー資格情報を保存しないため、かなり不便に思えます。

facebook が webview 内に読み込まれるときに PFLoginViewController didLogin が呼び出されるのに、facebook が safari 内に読み込まれるときに呼び出されないのはなぜですか。どうすれば修正できますか。呼び出されないだけでなく、Safari で facebook を読み込んだ後に [PFUser currentUser] が nil を返すため、ユーザーも作成されません。

4

1 に答える 1

1

これは大変なことでしたが、実際には簡単に修正できました。手順をたどってみると、誤ってコールバック メソッドを削除してしまったことに気付きました。どうぞ:

// Facebook oauth callback
- (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 {
    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:[PFFacebookUtils session]];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]];
}

試してみて、これで問題が解決するかどうかお知らせください。古い非推奨の例を見ていたので、これがそれを行う方法であるかどうかは100%確信が持てません。これを行う古い非推奨の方法は次のとおりです。

// Facebook oauth callback
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [PFFacebookUtils handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [PFFacebookUtils handleOpenURL:url];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
// Handle an interruption during the authorization flow, such as the user clicking the home button.
    [FBSession.activeSession handleDidBecomeActive];
}
于 2014-11-06T04:04:32.657 に答える