Как отправить уникальные регистрационные ссылки с помощью firebase? - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу создать приложение, в котором пользователи просто могут зарегистрироваться с помощью «Приглашения». Пользователи, уже имеющие аккаунт, могут отправлять приглашения на указанные адреса электронной почты, затем приложение отправляет электронное письмо со ссылкой на регистрацию, где есть токен, и можно использовать только указанный адрес электронной почты.

Итак, во-первых, как «автоматизировать» электронную почту из firebase, во-вторых, как сгенерировать уникальный токен регистрации для URL?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Для отправки электронной почты из Firebase вы можете использовать Облачная функция . На эту тему есть официальный образец: https://github.com/firebase/functions-samples/tree/Node-8/email-confirmation

Как сказал Мартин Цайтлер, вы можете использовать метод push(), чтобы сгенерировать уникальный токен и создать запись с соответствующим письмом. Затем, когда новый пользователь пытается зарегистрироваться, вы можете проверить, что его электронная почта соответствует токену, прежде чем регистрировать его. Это можно сделать разными способами: снова с помощью облачных функций, например, с помощью функции облака HTTPS (см. https://firebase.google.com/docs/functions/http-events) или путем создания в базе данных записи, которая запускает функцию облака (см. https://firebase.google.com/docs/functions/database-events).). В обоих случаях вы будете использовать Admin SDK для регистрации / создания пользователя. см. https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth и https://firebase.google.com/docs/auth/admin/manage-users#create_a_user

Обновление после вашего комментария

Например, у вас может быть форма, в которой вы просите приглашенного пользователя ввести свой адрес электронной почты и полученный им уникальный токен (вы можете открыть и предварительно заполнить эту форму по ссылке, отправленной в электронном письме). Когда эта форма отправляется, она создает узел в базе данных в реальном времени, и это создание узла запускает облачную функцию, которая:

  • Во-первых, проверит, соответствуют ли токен и электронная почта (и, возможно, проверит, что они не использовались ранее) и;
  • Во-вторых, если предыдущая проверка в порядке, зарегистрирует (то есть создаст) пользователя в вашем приложении Firebase.

Конкретно, давайте представим, что при отправке формы мы создаем следующий узел:

- registrationRequests
    -UID
       -email: .....
       -token: .....

Вы можете использовать облачную функцию в следующих строках:

exports.createInvitedUser = functions.database.ref('/registrationRequests/{requestId}')
    .onCreate((snap, context) => {
      const createdData = snap.val();
      const email = createdData.email;
      const token= createdData.token;

      //First action, verify email and token by reading the node of the database where you initially stored the email/token

     //Second action, register the user by using admin.auth().createUser({})
     //See https://firebase.google.com/docs/auth/admin/manage-users#create_a_user

    })
0 голосов
/ 09 ноября 2018

думаю, что это может работать с Firebase Invites .setDeepLink().

, где Deep-Link должен был бы доставить пользовательский токен.

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

может предоставить только пример Java:

public class DeepLinkActivity extends AppCompatActivity {

    @Override
    public void onResume() {
        super.onResume();
        Intent intent = getIntent();
        Uri uri = intent.getData();
        String token = uri.getQueryParameter("inviteToken");
        ...
    }
}

или .getDynamicLink () метод.

для создания уникального токена используйте .push(), что также позволяет позднее использовать .hasKey().

не уверен, доступен ли Invites для Web JavaScript.

...