Пользовательские претензии администратора SDK возвращают ноль - PullRequest
0 голосов
/ 24 февраля 2019

Я использую облачные функции Firebase с Android, создаю пользователя с пользовательскими утверждениями, я использовал настраиваемые утверждения в качестве документов, но настраиваемые утверждения = null: (

заранее спасибо

Firebase ID Token

Код:.

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

const serviceAccount = require('../serviceAccountKey.json');

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount)
});

exports.createSellerAccount = functions.https.onCall((data, context) => {
    const userEmail = data.email;
    const userPassword = data.password;

    return admin.auth().createUser({
        email: userEmail,
        password: userPassword
    }).then((userRecord) => {
        // See the UserRecord reference doc for the contents of userRecord.
        const additionalClaims = {
            premiumAccount: true
        };

        admin.auth().createCustomToken(userRecord.uid, additionalClaims)
            .then(function (customToken) {
                // Send token back to client
            })
            .catch(function (error) {
                console.log("Error creating custom token:", error);
            });

        return {
            sellerAccount: userRecord
        }
    }).catch((error) => {
        // console.log("Error creating new user:", error);
        if (error.code === "auth/email-already-exists") {
            throw new functions.https.HttpsError('already-exists', error.message);
        } else if (error.code === 'auth/invalid-email') {
            throw new functions.https.HttpsError('invalid-argument', error.message);
        } else {
            throw new functions.https.HttpsError('unknown', error.message);
        }
    });

})

1 Ответ

0 голосов
/ 24 февраля 2019

Ваш код создает пользовательский токен вместо добавления утверждений к существующему токену.Чтобы сделать последнее, см. Установка и проверка пользовательских утверждений пользователя через Admin SDK , который содержит этот пример:

// Set admin privilege on the user corresponding to uid.

admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
  // The new custom claims will propagate to the user's ID token the
  // next time a new one is issued.
});

Так что просто получите UID новогопользователь и позвоните setCustomUserClaims с ним.Затем подождите, пока он распространится на клиент, или зарегистрируйте токен в сценарии узла, чтобы убедиться, что утверждения присутствуют.

Обратите внимание, что я настоятельно рекомендую вам попытаться изолировать вашу проблему в будущем.Вместо того, чтобы показывать токен в коде Android, зарегистрируйте его в своем коде облачных функций.А еще лучше - полностью исключить облачные функции и просто запустить локальный скрипт Node.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...