Конфигурация AeroGear для iOS в Facebook

Я унаследовал приложение и пытаюсь понять точные различия в конфигурации между тем, что хочет Facebook, и тем, что в настоящее время реализовано.

In working to create a great Platform experience for everyone, we ask developers to ensure the apps they build comply with our Platform Policies. Your app APPNAME  (AppId: APPID) doesn't comply with the following:

Platform Policy 8.2: Native iOS and Android apps that implement Facebook Login must use our official SDKs for Login. 

Please make sure your iOS app is using the most recent version of our SDK for Login. You can find more information on our iOS SDK for Login and other Login-related products here: https://developers.facebook.com/docs/facebook-login/ios.

РЕДАКТИРОВАТЬ: Кроме того, Facebook также сказал мне это:

Thank you for reaching out and for all actions taken so far. I am still able to view the FB login using unofficial SDK [refer to screencast]. 

Я предполагаю, что это связано с настройкой OAuth2 в сервисе аутентификации.

Это настроено так:

private init() {
    let keycloakHost = ServerConfigurator.sharedInstance.keycloakUrl

    config = KeycloakConfig(
        clientId: "app-name-mobile",
        host: keycloakHost,
        realm: "master",
        isOpenIDConnect: true)

    config.webView = .safariViewController

    config.webViewHandler = self.webViewHandler
    oauthModule = KeycloakOAuth2Module(config: config, session: KeycloakClient.session)
     }

В то время как документы aerogear oauth, похоже, предполагают, что для Facebook требуется другая конфигурация:

https://github.com/aerogear/aerogear-ios-oauth2

let facebookConfig = FacebookConfig(
    clientId: "YYY",
    clientSecret: "XXX",
    scopes:["photo_upload, publish_actions"]
)
let oauth2Module = AccountManager.addFacebookAccount(config: facebookConfig)

let http = Http()
http.authzModule = oauth2Module
http.request(method: .get, path: "/get", completionHandler: {(response, error) in
    // handle response
})

Также кажется, что первоначальный разработчик передает данные через веб-представление Safari, используя методы, ожидаемые библиотекой. Я не совсем, почему это тоже. Я думаю, что на самом деле это может быть причиной проблемы, которую Facebook имеет с приложением.

Кто-нибудь может пролить свет на эту ошибку? Я пытаюсь наиболее эффективно справиться с этим, так как есть очень быстрый срок (неделя), и я даже не уверен, иду ли я по правильному пути здесь.

Любой совет высоко ценится.

РЕДАКТИРОВАТЬ: я сейчас использую эту версию:

https://github.com/maciej-gad-benefex/aerogear-ios-oauth2

РЕДАКТИРОВАТЬ: Это также необходимо интегрировать с провайдером идентификации Keycloak

2 ответа

Эта библиотека больше не будет обслуживаться. Последнее существенное изменение было 2 года назад (коммиты 13 января 2017 г.)

Я действительно рекомендую вам заменить это для AppAuth-iOS

Похоже, что Facebook говорит, что вы должны использовать SDK, предоставленный Facebook, для входа в систему, поэтому, чтобы выполнить это, вы должны перейти на https://developers.facebook.com/docs/facebook-login/ios.

Другие вопросы по тегам