как кодировать и декодировать эмодзи в Android?

ВНИМАНИЕ: не доверяйте этому ответу.

tldr: Я не думаю, что это возможно, без запуска вашего собственного сервера.

Вот моя попытка:

{
  "rules": {
    ".read": "auth.provider === 'google' && root.child('users').child(auth.uid).child('email').val().endsWith('@foobar.com')",
    ".write": "auth.provider === 'google' && root.child('users').child(auth.uid).child('email').val().endsWith('@foobar.com')",
    "users": {
      "$user_id": {
        ".write": "auth.provider === 'google' && $user_id === auth.uid && newData.child('email').val().endsWith('@foobar.com')"
      }
    }
  }
}

Я считаю, что вышеизложенное говорит, что «разрешить людям создавать нового пользователя, если они аутентифицированы Google, пытаются записать в узел базы данных для них ($user_id === auth.uid), а их адрес электронной почты заканчивается на foobar.com».

Однако была отмечена проблема: любой веб-клиент может легко изменить свою электронную почту (используя консоль dev) до отправки сообщения в Firebase. Таким образом, мы не можем доверять данным пользовательской записи при их хранении в Firebase.

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

Для записи я вставляю своего пользователя таким образом:

function authDataCallback(authData) {
  if (authData) {
    console.log("User " + authData.uid + " is logged in with " + authData.provider + " and has displayName " + authData.google.displayName);
    // save the user's profile into the database so we can list users,
    // use them in Security and Firebase Rules, and show profiles
    ref.child("users").child(authData.uid).set({
      provider: authData.provider,
      name: getName(authData),
      email: authData.google.email
    });

Как вы могли бы для представления, определенный пользователь мог бы перезаписать здесь значение email (например, с помощью DevTools).

28
задан Vishnu 1 August 2014 в 06:25
поделиться