Как проверить приложение в Firebase Functions - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть два Android приложения, которые я называю "appClient" и "appServer". Я использую аутентификацию Firebase для регистрации и дальнейшего входа в оба приложения, но пользователь, зарегистрированный в appClient, не может войти в appServer и наоборот. Таким образом, я нашел способ различать тех пользователей, которые вызывают функцию Firebase каждый раз, когда регистрируется новый пользователь, и включают в себя настраиваемые требования к ним. Вот документация по пользовательским претензиям: https://firebase.google.com/docs/auth/admin/custom-claims

Я использую этот код

// On sign up.
exports.processSignUp = functions.auth.user().onCreate((user) => {
  // Check if user meets role criteria.
  if ("how to check if the incoming user came from appClient or appServer???") {
    const customClaims = {
      client: true
    };
    // Set custom user claims on this newly created user.
    return admin.auth().setCustomUserClaims(user.uid, customClaims)
      .then(() => {
        // Update real-time database to notify client to force refresh.
        const metadataRef = admin.database().ref("metadata/" + user.uid);
        // Set the refresh time to the current UTC timestamp.
        // This will be captured on the client to force a token refresh.
        return metadataRef.set({refreshTime: new Date().getTime()});
      })
      .catch(error => {
        console.log(error);
      });
  }
});

Но я не нашел способа проверить, из какого приложения пришел новый пользователь. Есть ли способ проверить это?

1 Ответ

1 голос
/ 20 февраля 2020

В настоящее время невозможно определить, какое приложение использовал пользователь при создании учетной записи. Единственными входными данными для функции типа onCreate auth являются два аргумента типа UserRecord и EventContext .

Если вы тщательно просмотрите свойства этих объектов, вы не вижу ничего, что распознает приложение. Вам нужно будет найти другой способ настройки пользовательских утверждений, возможно, передав пользовательский UID и некоторые идентифицирующие данные в функцию HTTP или вызываемого типа.

...