Как Firebase Auth с Rails?

Я полностью интегрировал Firebase Auth в свое приложение для Android, теперь я хочу, чтобы клиент взаимодействовал с моим бэкэнд (рельсами), используя уникальный токен. Мой вопрос в том, как это делается:

  1. Пользователь регистрируется, используя, например, Facebook Auth,
  2. Отправлять токен Firebase и проверять его
  3. Отвечайте клиенту с уникальным Token для предстоящих запросов Api (получите данные пользователей, сохраните данные пользователя …)

спасибо

Вам не нужен шаг №3. Firebase Auth Android SDK getToken () API возвращает недолговечный (один час) токен Firehase Auth ID для пользователя входа и автоматически возвращает новый токен, если предыдущий истекает.

В документе проверки токенов Firebase описано, как получить токен Firebase в клиентском приложении и проверить токен на стороне сервера.

Принимая ответ JinLiu вперед, как только вы получите токен в своем коде Android, отправьте его на ваш сервер: https://www.yourbackend.com?authenticate?token=asdad7687h … Обратите внимание, что токен, созданный Firebase, является JWT Токена, мы должны сначала проверить его подлинность и декодировать его в бэкэнд. Для этого вам нужно добавить эти два драгоценных камня в ваш gemfile gem 'jwt', '1.5.6' gem 'rest-client', '2.0.1'. С этим вы должны добавить эти две (частные) функции в Ваш контроллер:

def get_set_user begin token = params[:token] if token.nil? @user = nil return end firebase_id = verify_user(token)[0]["user_id"] if User.where(:firebase_id => firebase_id).exists? @user = User.where(:firebase_id => firebase_id).first else @user = User.new(:firebase_id => firebase_id) @user.save @user end rescue @user = nil end end def verify_user(token) certificate_url = "https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com" myresponse = RestClient.get(certificate_url).body certificates = JSON.parse myresponse.gsub('=>', ':') myjson ="" certificates.each do|key , value| begin x509 = OpenSSL::X509::Certificate.new(value) iss = 'https://securetoken.google.com/<yourdomain>' aud = 'yourdomain' # change this myjson = JWT.decode(token, x509.public_key, true, { algorithm: "RS256", verify_iat: true , iss: iss , verify_iss: true , aud: aud , verify_aud: true }) return myjson rescue end end return nil end 

Теперь вы можете вызвать get_set_user, как и до действия, чтобы увидеть, если у пользователя есть действительный токен. Идея проста. Проверьте, подписан ли токен одним из ключей, указанных на странице https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com . Если да, декодируйте токен и получите идентификатор firebase.

Intereting Posts
ProGuard может привести к неправильным вычислениям Как получить информацию о магазине google play в моем приложении для Android? Как динамически изменять высоту ListView в Android? Retrofit 2 Многостраничный запрос POST отправляет дополнительные кавычки в PHP Стандартная формальный стиль Хорошо ли использовать только GCM для разработки чат-приложений для XMPP-андроида? Использование UnboundID SDK с файлом сертификата SSL для подключения к LDAP-серверу в приложении Android Служба FoxyLocationApi Background Location перестает получать обновления случайно Получить Android .apk-файл VersionName или VersionCode БЕЗ установки apk Исключение индексов из HashMap Мое приложение занимает так много времени, чтобы запустить экран первой активности Android RealmList <Integer> и RealmList <String> Java.lang.NoClassDefFoundError: сбой разрешения: Lorg / jacoco / agent / rt / internal_773e439 / Offline; Как извлечь значение из API Android Runtime.getRuntime (). Exec () для навигации по каталогам