Невозможно войти через Facebook на iOS (SDK не может создать URL авторизации) - PullRequest
0 голосов
/ 08 декабря 2018

Без всякой видимой причины мое полнофункциональное приложение с функцией «Войти через Facebook» перестало работать вчера.

Я глубоко погрузился в ошибку и обнаружил, что URL-адрес авторизации не может быть создан по какой-то причине изнутри, проваливая весь процесс.

Проблема возникает из-за метода + (NSURL *)URLWithScheme:(NSString *)scheme host:(NSString *)host path:(NSString *)path queryParameters:(NSDictionary *)queryParameters error:(NSError *__autoreleasing *)errorRef в классе FBSDKInternalUtility.

В строке 430 он пытается создать URL:

NSURL *URL = [[NSURL alloc] initWithString:[NSString stringWithFormat:
                                          @"%@://%@%@%@",
                                          scheme ?: @"",
                                          host ?: @"",
                                          path ?: @"",
                                          queryString ?: @""]];

Я прошелчерез код.scheme, host, path и queryString все установлены.Хотя он возвращает nil вместо URL.Я попытался вызвать метод с пустой строкой запроса, и он фактически создал URL.По какой-то причине queryString вызывает неправильную сборку URL.

Вот queryString: (я заменил идентификатор приложения на 123456789)

(lldb) po queryString ?auth_type=rerequest&client_id=123456789&default_audience=friends&display=touch&e2e={%22init%22%3A70747.196361124996}&fbapp_pres=1&redirect_uri=fb123456789%3A%2F%2Fauthorize%2F&response_type=token%2Csigned_request&return_scopes=true&scope=user_birthday%2Cemail%2Cuser_friends%2Cuser_photos&sdk=ios&sdk_version=4.39.0&state={%22challenge%22%3A%22yi8jE3mok79u9BheN8dzCMCviGY%253D%22%2C%220_auth_logger_id%22%3A%22329202ED-2F9B-4DBC-A191-E2C720D9779C%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A%22sfvc_auth%22}

Что может быть причиной этого?Это работало всего несколько дней назад.

1 Ответ

0 голосов
/ 08 декабря 2018

Получив ту же ошибку на симуляторе, я рассмотрел изменения в своем приложении более подробно.Это был последний SDK для Facebook (4.39).Я запустил pod update для обновления некоторых других модулей, который также обновил Facebook SDK с 4.38.1 до 4.39.

Я вернулся к 4.38.1, и проблема исчезла.Другими словами, Facebook SDK 4.39 нарушил их собственную функцию входа в систему, фактически сделав их собственный SDK бесполезным.

Принудительное использование более старой версии, как показано ниже, решило проблему:

pod 'FBSDKCoreKit', '~> 4.38.1'
pod 'FBSDKLoginKit', '~> 4.38.1'
...