Safari を使用してユーザーをログインさせる最新バージョンの ParseFacebookUtils を使用しています。プロセスは期待どおりに機能し、Safari で公開プロファイルへの許可を求めてアプリに戻ります。奇妙な動作は、ログイン リクエストがアプリに返されたときに、ブロック内のコードが実行されないことです。
ログインボタンをもう一度押すか、ログイン動作をアプリ内で Web ビューが表示される Web ベースに設定した場合にのみ実行されます。ただし、ユーザーはログインする必要があり、詳細を忘れている可能性があるため、これは最善ではありません。以下は、ユーザーのログインに使用しているコードです。
PFFacebookUtils.logIn(withPermissions: ["public_profile"]) { user, error in
if let user = user {
if user.isNew {
print("User signed up and logged in through Facebook!")
} else {
print("User logged in through Facebook!")
}
} else {
print("Uh oh. The user cancelled the Facebook login.")
}
}
これは、URL の初期化と処理に使用しているアプリ デリゲートのコードです。
import UIKit
import Parse
import ParseFacebookUtils
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Parse.initialize(with: ParseConfig.configuration)
PFFacebookUtils.initializeFacebook()
// Configure an anon user on startup
PFUser.enableAutomaticUser()
PFUser.current()?.saveInBackground()
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return FBAppCall.handleOpen(url, sourceApplication: UIApplicationOpenURLOptionsKey.sourceApplication.rawValue)
}
}