it-swarm.com.ru

ошибка входа в Facebook - canOpenURL: сбой для URL: "fbauth2: ///" - ошибка: "(null)"

Когда я нажимаю на кнопку «Войти через Facebook», он открывает браузер Safari и сразу же закрывается. Заметили ошибку на консоли.

Метод делегата приложения:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    print("###### URL : ")
    print(url)
    print("###### App : ")
    print(app)
    print(options["UIApplicationOpenURLOptionsSourceApplicationKey"])
    return FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url,  sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String,
            annotation: nil)
}
 2015-09-18 18: 37: 51.410 [21036: 5050465] -canOpenURL: сбой для URL: "fbauth2: ///" - ошибка: "(ноль)" 

 2015-09- 18 18: 37: 51.417 [21036: 5050465] -canOpenURL: сбой для URL: "fbauth2: ///" - ошибка: "(ноль)" 

 ###### URL: 
 . .__ fb4554284912963222: // авторизовать/код_ошибки = 100 & error_message = Недопустимый + Сфера% 3A + государственные и состояние =% 7B% 22challenge% 22% 3A% 222ZmK6R5F05d% 252F060TkCqj8SjPLjc% 253d% 22% 2C% 220_auth_logger_id% 22% 3A% 223C79F2C8-61B9? -470E-AE1B-E1C68435DB83% 22% 2C% 22com.facebook.sdk_client_state% 22% 3Atrue% 2C% 223_method% 22% 3A% 22sfvc_auth% 22% 7D & э2э =% 7B% 22init% 22% 3A145973.000512302% 7D # _ = _

 ###### Приложение: 


 Необязательно (com.Apple.SafariViewService) 
 Nil 

 ###### err: 

 Необязательно (Error Domain = com.facebook.sdk.core Code = 8 "(null)" UserInfo = {com.facebook.sdk: FBSDKGraphRequestErrorGraphErrorCode = 100, com.facebook.sdk: FBSDKErrorDeveloperMessageKey = Недопустимая область действия: public, com.facebook.sdk: FBSDKGraphRequestErrorCategoryKey = 0}) 

IDE: xcode 7
Язык: Swift2
Facebook SDK: 4.6.0
Разбор: 1.8.4

Я также проверил .plist имеет все ключи, которые требуются . Также проверил идентификатор пакета для ошибок опечатки. Все выглядит хорошо . Facebook активен.

Любая помощь?

56
sfbayman

У меня такое же предупреждение, но в Facebook Docs есть ответ.

Это предупреждение Xcode, указывающее, что вызов canOpenURL: возвратил false. Пока вы настроили запись LSApplicationQueriesSchemes в своем списке, как описано выше, вы можете игнорировать это предупреждение

https://developers.facebook.com/docs/ios/ios9

41
Edoardo Benissimo

Предупреждение «-canOpenURL: fail for URL» представляет собой красную сельдь и означает, что приложение FB не установлено на устройстве/симуляторе, на котором вы работаете.

Похоже, вы запрашиваете недопустимую область (иначе разрешение) "Public". Можете ли вы включить свой код, который включает в себя, какие разрешения вы запрашиваете? public_profile, вероятно, то, что вы хотите (и то, что SDK по умолчанию, если ничего не предоставлено).

Что еще более важно, не делайтеNOTдобавьте fbauth2 в ваши CFBundleURLSchemes, поскольку это нарушит потоки входа в систему. Как отметил Химаншу, эти записи должны быть введены в LSApplicationQueriesSchemes в нашем списке.

33
Chris Pan

Если вы перекомпилируете с iOS SDK 9.0, добавьте следующее в список приложений, если вы используете версию Facebook SDK v4.6.0 или выше:

   <key>LSApplicationQueriesSchemes</key>
   <array>
          <string>fbapi</string>
          <string>fb-messenger-api</string>
          <string>fbauth2</string>
          <string>fbshareextension</string>
   </array>

Чтобы подготовить интеграцию с Facebook, поддерживаемую iOS 9, ознакомьтесь с Руководства по интеграции Facebook для iOS 9

Чтобы проверить версию Facebook SDK, используйте следующую строку кода:

   print("SDK version \(FBSDKSettings .sdkVersion())")
4
Himanshu Mahajan

Я пропустил импорт FBSDKCoreKit. Позже он начал работать на симуляторе, но не на устройстве iPhone. 

Также заметил следующее FAQ на сайте Facebook. Почему я вижу консольные сообщения, такие как 

'canOpenURL: сбой для URL: "fb ...: //' 

или же ? Это предупреждение Xcode, указывающее, что вызов canOpenURL: вернул false. Пока вы настроили запись LSApplicationQueriesSchemes в своей plist, как описано выше, вы можете игнорировать это предупреждение

Что касается не работы на устройстве iPhone, пожалуйста, обратитесь: Parse API - логин Facebook не работает на устройстве iPhone

2
sfbayman

Это предупреждение Xcode, указывающее на возвращенный вызов canOpenURL: ложный. Пока вы настроили LSApplicationQueriesSchemes Запись в вашем списке, как описано выше, вы можете игнорировать это предупреждение.

Перейдите по ссылке Ссылка Выберите приложение и настройте свой info.plist

import И добавьте этот код в ваше AppDelegate

import FBSDKCoreKit .  
import FBSDKLoginKit

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
     return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
      return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
}
1
ZAFAR007

У вас есть дополнительный "/" в вашем URL "fbauth2: ///".

Затем вы можете увидеть «error_message = Invalid + Scope» в URL, вам, вероятно, следует проверить разрешения вашего приложения: https://developers.facebook.com/docs/facebook-login/permissions/v2. 4

0
Paul Slm

Вам нужно добавить этот метод, если ваше приложение работает на iOS9 или выше.

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
return [[FBSDKApplicationDelegate sharedInstance] application:app
                                                  openURL:url
                                        sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                               annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];

}

Если вам нужна версия Swift:

@available(iOS 9.0, *)
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return SDKApplicationDelegate.shared.application(app,
                                                     open: url,
                                                     sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
                                                     annotation: options[UIApplicationOpenURLOptionsKey.annotation] as Any)
}
0
Muzammil

Я понял мою проблему. Это был просто синтаксис в функции loginButtonClicked. Сообщение об ошибке привело меня по неверному пути. Вот рабочий код.

@objc func loginButtonClicked() {
    self.login = FBSDKLoginManager()

    self.login.logIn(withReadPermissions: ["public_profile"], from: self, handler: {(result, error) -> Void in
        if error != nil {
            print("Process error")
        }
        else if (result?.isCancelled)! {
            print("Cancelled")
        }
        else {
            print("Logged in")
            DispatchQueue.main.async(execute: {
                let viewController:UIViewController = self.storyboard?.instantiateViewController(withIdentifier: "UITabBarController") as! UITabBarController
                self.present(viewController, animated: true, completion: nil)
            })
        }

        })
}
0
Rob Schlackman

Проблема связана с App Transport Security, представленной в iOS 9.

Есть два решения, оба имеют дело с исправлением вашего файла info.plist

Вот руководство http://discoverpioneer.com/blog/2015/09/18/updating-facebook-integration-for-ios-9/

0
Phil