В настоящее время я использую приведенный ниже код для входа в Facebook с помощью пользовательской кнопки узла спрайта:
func runLoginForFacebook() {
print("logging in with facebook...")
print("FACEBOOK CURRENT TOKEN ---->\(FBSDKAccessToken.current())")
let login = FBSDKLoginManager()
let viewController = UIApplication.shared.keyWindow?.rootViewController
login.logIn(withReadPermissions: ["public_profile"], from: viewController, handler: { result, error in
if error != nil {
print("Process error \(error!.localizedDescription)")
} else if result?.isCancelled != nil {
print("Cancelled \(error?.localizedDescription)")
} else {
print("Logged in")
signIntoFirebase()
}
})
}
теперь это позволяет мне войти в систему и нажать кнопку продолжения, чтобы экран был закрыт, но всегдавозвращает isCanceled как yes вместо входа в систему.
Я искал ответы на всем этом веб-сайте, и все они говорят, что проблема заключается в делегате приложения, вот мой делегат приложения, который выглядит нормально:
class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let handled: Bool = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplication.OpenURLOptionsKey.annotation])
// Add any custom logic here.
return handled
}
Следующее решение состояло в том, что у меня не было тестовых пользователей в моем приложении на портале для разработчиков на Facebook, который я проверял, и это не тот случай, когда у меня была та же учетная запись, которую я использовал для входа в качестве тестового пользователя / администраторадля приложения.
Также я проверил свой файл info.plist, и все, кажется, в порядке (см. ниже. Я ставлю XXXXs в имени и числах по причинам конфиденциальности число проверяетсянормально и совпадает с ID портала разработчика)
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb4961923108XXXXX</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>496192XXXXXXXX</string>
<key>FacebookDisplayName</key>
<string>NaXXX</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Может кто-нибудь мне помочь?любые идеи будут с благодарностью, потому что я был в этом в течение дня, и я не могу понять это.