Может кто-нибудь мне помочь? Все, что я хочу сделать, это обновить утверждения JWT в функции Firebase. Таким образом, я могу установить флаг как IsAdmin et c и использовать его в БД в реальном времени. Я видел эту статью https://firebase.google.com/docs/auth/admin/custom-claims, но не могу заставить работать любую комбинацию.
Это мой вызов функции firebase, который я выполняю после входа в систему. Связана ли эта проблема с локальная отладка? Могу ли я проверить это локально?
import * as functions from 'firebase-functions';
const cors = require('cors');
const corsHandler = cors({origin: true});
const admin = require('firebase-admin');
admin.initializeApp();
export const resetClaims = functions.https.onRequest((req : any, res : any) => {
corsHandler(req, res, () => {
admin.auth().verifyIdToken(req.header("authorization").replace("Bearer ", '')).then((claims : any) => {
var uid = claims.uid;
admin.auth().setCustomUserClaims(uid, {test: true}).then(() => {
// The new custom claims will propagate to the user's ID token the
// next time a new one is issued.
}).catch((er : any)=>{
res.end(JSON.stringify({
status: er
}));
return;
});
return;
});
});
Я вызываю это локально из веб-приложения Firebase. Используя следующий код
const resetClaims = async ()=> {
const fn = firebase.functions().httpsCallable('resetClaims');
const res = await fn();
firebase.auth().currentUser.getIdToken(true);
alert(res.data.status);
}
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
resetClaims();
setUsername(user.displayName);
} else {
setUsername('');
}
});
Пост http работает. Но возвращает следующее при локальной отладке.
{"status": {"code": "app / invalid-credential", "message": "Реализация учетных данных, предоставленная для initializeApp () через \" credential \ " "свойству не удалось получить действительный токен доступа Google OAuth2 со следующей ошибкой: \" Ошибка при получении токена доступа: ошибка при выполнении запроса: getaddrinfo ENOTFOUND metadata.google.internal metadata.google.internal: 80. Код ошибки: ENOTFOUND \ "."}}