Где я могу найти пакет firebase-admin, содержащий метод revokeRefreshTokens?

Мне нужно использовать метод revokeRefreshTokens класса Auth, который описан в документе API Node.js здесь: https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#revokeRefreshTokens

Он содержится в пакете firebase-admin, который я установил с помощью команды npm в соответствии с документацией по адресу https://www.npmjs.com/package/firebase-admin#установка:

npm install --save firebase-admin

Сделав это, зайдя в установленный каталог и проверив файл auth.js, я вижу, что метод отсутствует. Где именно я могу найти этот revokeRefreshTokens метод для использования в облачных функциях Firebase?

Первоначально я также пробовал вызвать метод в своей облачной функции, используя:

    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    admin.initializeApp(functions.config().firebase);

    //Some additional code here to fetch the userRecord...

    admin.auth().revokeRefreshTokens(userRecord.uid)
      .then(function() {
        console.log("Successfully revoked token");
      })
      .catch(function(error) {
        console.log("Error revoking token:", error);
      });

что дало ошибку, говоря

TypeError: admin.auth (...). RevokeRefreshTokens не является функцией.

Сообщите мне, если потребуется дополнительная информация.




Ответы (1)


Убедитесь, что вы устанавливаете последнюю версию (5.7.0). Если вы это сделали, вы найдете следующее в node_modules/firebase-admin/lib/auth/auth.js (около строки 295):

    /**
     * Revokes all refresh tokens for the specified user identified by the provided UID.
     * In addition to revoking all refresh tokens for a user, all ID tokens issued before
     * revocation will also be revoked on the Auth backend. Any request with an ID token
     * generated before revocation will be rejected with a token expired error.
     *
     * @param {string} uid The user whose tokens are to be revoked.
     * @return {Promise<void>} A promise that resolves when the operation completes
     *     successfully.
     */
    Auth.prototype.revokeRefreshTokens = function (uid) {
        return this.authRequestHandler.revokeRefreshTokens(uid)
            .then(function (existingUid) {
            // Return nothing on success.
        });
    };
person Hiranya Jayathilaka    schedule 11.01.2018
comment
Спасибо @Hiranya, это сработало! Кроме того, мне также пришлось указать обновленную версию для этого пакета в файле package.json в каталоге functions моей установки Firebase Cloud Functions. - person WebDev; 11.01.2018