Подтвердить что ты не робот

Ошибка входа в 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: failed for URL: "fbauth2:///" - error: "(null)"

2015-09-18 18:37:51.417[21036:5050465] -canOpenURL: failed for URL: "fbauth2:///" - error: "(null)"

 ###### URL : 

  fb4554284912963222://authorize/?error_code=100&error_message=Invalid+Scope%3A+public&state=%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&e2e=%7B%22init%22%3A145973.000512302%7D#_=_

   ###### App : 

   
    Optional(com.apple.SafariViewService)
    nil

   ###### err:

   Optional(Error Domain=com.facebook.sdk.core Code=8 "(null)" UserInfo={com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=100, com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Invalid Scope: public, com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=0})

IDE: xcode 7
Язык: Swift2
Facebook SDK: 4.6.0
Анализ: 1.8.4

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

"-canOpenURL: failed for URL" warning - это красная селедка, а просто означает, что приложение FB не установлено на устройстве/симуляторе, в котором вы работаете.

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

Что еще более важно, НЕ добавить fbauth2 в ваши CFBundleURLSchemes, так как это приведет к поломке логинов. Как указал Химаншу, эти записи должны вводиться в разделе LSApplicationQueriesSchemes в нашем plist.

Ответ 3

Если вы перекомпилируете iOS SDK 9.0, добавьте следующее в свой прикладной уровень, если используете версию 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 Integraion для iOS 9.

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

   print("SDK version \(FBSDKSettings .sdkVersion())")

Ответ 4

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

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

'canOpenURL: не удалось URL: "fb...://'

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

Что касается работы с устройством iPhone, обратитесь: API-интерфейс анализа - вход в Facebook не работает на устройстве iPhone

Ответ 5

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

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

Ответ 7

Вам нужно добавить этот метод, если ваше приложение работает на 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)
}

Ответ 8

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

Перейдите к этой Ссылка Выберите свое приложение и настройте 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)
}

Ответ 9

Я понял свою проблему. Это был просто синтаксис в функции 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)
            })
        }

        })
}