Как использовать встроенную учетную запись iOS Facebook для аутентификации в нашем пользовательском бэкэнде?

Целью является упрощение процедуры входа/регистрации пользователя в нашем приложении iOS. У нас есть пользовательский бэкэнд и наш собственный вход в систему и регистрация потока, и мы хотели добавить аутентификацию Facebook. История действительно такая же, как описано в ЭТОЙ СТОЛ. Мы выпускаем свои собственные токены доступа, и нам нужно связать токены доступа Facebook с пользователями нашей базы данных. Мы сделали именно то, что описано в этой статье.

  1. Мы использовали токен доступа Facebook на стороне клиента,
  2. передал его серверу,
  3. сервер, подключенный к графическому API Facebook, и получил необходимую информацию от него.
  4. поскольку сервер ответов отправляет объект JSON, содержащий информацию профиля пользователя, отображаемую на стороне клиента.

Проблема, которая у меня есть, до того момента, когда мы получим токен доступа к Facebook. Первая версия, которую я сделал, - это использование FBSession как описано ЗДЕСЬ, чтобы войти в систему и получить токен доступа. Он просто отображает окно входа в систему Facebook, пользователь вводит свои учетные данные, запрашивает необходимые разрешения, а FBSession становится активным, и я могу получить токен, как описано ЗДЕСЬ.

Начиная с iOS 6 пользователь имеет возможность входа в Facebook в одном месте, в настройках iOS и использовать этот сеанс во всех приложениях для публикации и получения информации от Facebook, единственное, что ему нужно сделать, - это одобрить разрешения которые заданы приложением, таким образом, нет необходимости входить в каждое приложение отдельно. С точки зрения UX это огромное усовершенствование, и я хотел использовать собственную сессию iOS Facebook, открытую Social Framework, чтобы получить токен доступа и передать его на наш сервер. Я думал, что это будет легко, и процедура описана ЗДЕСЬ, и вот цитата оттуда с линиями, чтобы получить токен доступа

    // Get the access token, could be used in other scenarios
    ACAccountCredential *fbCredential = [self.fbAccount credential];            
    NSString *accessToken = [fbCredential oauthToken];

К сожалению, этот код не работает, [self.fbAccount credential]; возвращает nil. И вот цитата из документации Apple о ACAccount

мандат

Учетные данные, используемые для аутентификации пользователя этой учетной записи.

@property(nonatomic, retain) ACAccountCredential *credential

Обсуждение. Это свойство требуется и должно быть установлено до сохранения учетной записи. По соображениям конфиденциальности это свойство недоступно после сохранения учетной записи.

Таким образом, политика конфиденциальности Apple не позволяет доступным токенам доступа к другим пользователям.

Теперь это тупик. Чтобы аутентифицироваться на нашем сервере с помощью Facebook, мне нужен токен доступа к Facebook, а для улучшения UX (какой требует клиент) мне нужно использовать собственную сессию Facebook, доступную из меню настроек. Есть ли решение этой проблемы?

+1
источник поделиться

На данный вопрос пока никто не ответил

Посмотрите аналогичные вопросы:

или похожие:

Посмотрите другие вопросы по меткам или Задайте вопрос