1

Я хочу создать веб-приложение с AngularJS и Firebase, но только некоторые части приложения нуждаются в трехсторонней привязке Firebase. Остальные части будут работать, просто навязывая привязку только один раз к текущим данным без постоянного обновления. Другими словами, достаточно обычного REST API.Firebase простой логин для аутентификации с помощью REST api

Thinkster AngularJS-Firebase tutorial показывает, как использовать $resource для доступа к этому API-интерфейсу Firebase REST. Такой подход не требует, чтобы открыть одновременное подключение к Firebase и только извлекает текущие данные без обновления:

app.factory('Post', function ($resource) { 

return $resource('https://FIREBASE-URL.firebaseIO.com/posts/:id.json'); 
}); 

было бы возможно сделать такого рода запросов после входа в Firebase с помощью простого сервиса входа в систему, но без поддержание подключения Firebase. Например:

//Does this already open a connection to FireBase? 
var ref = new Firebase('https://FIREBASE-URL.firebaseIO.com'); 

//Login to FireBase 
ref.authWithPassword({ 
    email : "[email protected]", 
    password : "correcthorsebatterystaple" 
}, function(error, authData) { 
    if (error === null) { 
    // Can we close the connection now while still leaving the user authenticated? 
    Firebase.goOffline(); 
    } else { 
    console.log("Error authenticating user:", error); 
    } 
}); 

Если я хотел бы сделать запросы к REST API теперь:

  1. Will Firebase распознает переменную auth?
  2. Сохранено ли разрешение?
  3. Могу ли я использовать этот метод для предотвращения открытия соединения и использования Firebase в качестве обычного REST API?

Чтобы сделать вещи немного более ясно:

  • мне не нужно в режиме реального времени бэкенд, простой REST бэкенд будет достаточно
  • Я хотел бы использовать Firebase, поскольку она обеспечивает легкий методы аутентификации
  • Если возможно, я хочу, чтобы избежать с помощью Firebase SDK и взаимодействовать только с моей Firebase с использованием REST API

в другими словами, мой вопрос будет:

Возможно ли аутентифицировать клиентскую сторону пользователей для использования правил безопасности Firebase при использовании Firebase в качестве REST API без использования SDK?

+0

Нет смысла использовать REST API и SDK в тандеме. Если вы уже загрузили SDK и уже установили соединение сокета, это будет более эффективным, дешевым и менее сложным, чтобы повторно использовать существующее соединение. SDK также сильно оптимизирован по API REST и намного лучше справляется с временными отключениями и сетевыми ошибками. Используя API REST, вы существенно затрудните свою жизнь для нулевого выигрыша. – Kato

+0

Попробуйте упростить свой вопрос в одном случае, который вы хотите решить. Вы, по сути, задали дюжину вопросов и не представили вариант использования, который вы пытаетесь решить. Предположительно, ваша цель - оптимизировать, но то, что мы оптимизируем, неясно, поэтому вы не получили больше ответов здесь. См. [Создание mcve] (http://stackoverflow.com/help/mcve) и [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/ 66378 # 66378). – Kato

ответ

1

Это случай чрезвычайно преждевременной оптимизации, и это также вредно, чем полезно.

Нет смысла использовать REST API и SDK в тандеме. Если вы уже загрузили SDK и уже установили соединение сокета, это будет более эффективным, дешевым и менее сложным, чтобы повторно использовать существующее соединение. SDK также сильно оптимизирован по API REST и намного лучше справляется с временными отключениями и сетевыми ошибками. Используя API REST, вы существенно затрудните свою жизнь для нулевого выигрыша.

Если ваша цель - загрузить данные ровно один раз без прослушивания обновлений, просто используйте вместо этого once.

Создание ref() не вызывает немедленного создания соединения. При первом подтверждении подлинности, записи или чтении данных соединение устанавливается.

Аутентификация через SDK вообще не помогает для запросов REST.Вам необходимо передать ?auth=TOKEN в URL-адрес, где TOKEN - это токен аутентификации, который вы создаете вручную (совсем не подключенный к событию авторизации авторизации SDK).

Если вы не хотите возможности в реальном времени, не используйте SDK вообще. Просто используйте $ http или $ resource и подключайтесь через URL-адреса .json.

+0

Вы правы, когда говорите, что я не ищу данные в режиме реального времени, и мне было интересно, возможно ли избежать открытия соединения Firebase, хотя вы все еще можете использовать методы Simplelogin Firebase. Это по существу означает использование Firebase в качестве REST-бэкэнд без трехсторонней привязки. Вы говорите, что я не должен пытаться использовать Firebase таким образом? Или это возможно, но просто не так, как я показал? Я спрашивал, можно ли использовать Firebase в качестве REST-backend, используя методы simplelogin, чтобы избежать написания моего собственного сервера аутентификации. – arnoutaertgeerts

+0

Надеюсь, это прояснит некоторые вещи, спасибо за ваш ответ! – arnoutaertgeerts

+0

Невозможно использовать простой логин в сочетании с REST API. Я также не вижу никаких преимуществ в использовании REST API, если у вас есть SDK. Это быстрее, дешевле и удобнее программировать (читайте проще). – Kato

Смежные вопросы