2016-06-06 3 views
2

У меня возникла проблема с выпуском Facebook, который произошел сегодня. Я использую Rails omniouth-facebook gem для пользователей аутентификации через Fb.Facebook UID от ответа не совпадает с пользовательским uid, хранящимся в базе данных

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

У меня есть эта часть:

find_by(provider: auth.provider, uid: auth.uid) 

где аутентификации является env['omniauth.auth'] и когда я вручную проверить пользователя с auth.email в моей базе данных uids не соответствует, поэтому эта функция всегда возвращает ноль и Войти Failure.

Есть ли у кого-нибудь идеи, что может быть проблемой? На самом деле был бы признателен за любой намек.

Спасибо, Боян

+0

Является ли UID областью? В зависимости от API и контекста Facebook может возвращать идентификаторы, уникальные для отношений с конкретной страницей. –

+0

Я не знаю, это область, я полагаю, да, поскольку у меня зарегистрировано приложение Fb. А также при постановке в значительной степени той же конфигурации, и все работает нормально – zauzaj

+0

Я только что проверил, он облагорожен, так как используется V2.5 Дело в том, что он работал около 4-5 часов назад, и я не уверен, что и как его решить. – zauzaj

ответ

1

С API v2.0, Facebook представила приложение-Scoped идентификаторов пользователей.

Для каждого нового пользователя, который подключился к вашему приложению после того, как коммутатор был добавлен в 2.0, вы больше не получите свой «глобальный» идентификатор пользователя, но только приложение, ограниченное приложением, уникальное для вашего приложения, Чтобы быть более конкретным, он привязан к вашему идентификатору приложения.

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

Если у вас есть бизнес с несколькими приложениями, вы можете подключить их через Business Manager, чтобы вы могли подключать различные идентификаторы пользователей приложений для разных приложений.

+0

Спасибо за ответ. Итак, дело в том, что это только одно приложение, которое мы используем для производства, и мы используем его в январе этого года. Все было прекрасно со вчерашнего дня, когда я заметил эту проблему. Мы не касались приложения ни Facebook_key/Facebook_secret. Так что сейчас наши существующие пользователи жалуются, так как они не могут войти через Facebook, и нам нужно быстро найти решение. Есть ли у вас предложения ? – zauzaj

+0

Идентификаторы пользователей в приложениях должны оставаться неизменными для одного и того же идентификатора приложения. Если это не так, напишите отчет об ошибке: https://developers.facebook.com/bugs – CBroe

+0

Также я заметил, что когда я пытаюсь сделать что-то вроде: www.facebook.com/user_id, он работает с обоими uids , Шахта из базы данных для существующего пользователя и новая от ответа. Может быть, я должен обновить их все новым? – zauzaj