Я создаю мобильное приложение, которое использует FireBase. При входе в систему я хотел бы, чтобы приложение аутентифицировало пользователей из базы данных моего веб-сайта, а затем копировало эту информацию в базу данных firebase. После создания учетной записи он должен написать в базу данных сайта, затем в базу данных firebase.
Прямо сейчас я чувствую себя немного застрявшим в грязи, я не уверен, что я двигаюсь в правильном направлении или я должен полностью начать все сначала и подойти к этому, так сказать, под другим углом. Прямо сейчас меня озадачивает следующая ошибка, я не знаю, откуда этот ключ должен прийти:
undefined
/home/ethreil/Desktop/codestudio/firebasesdk.js:40
var signingKey = key.publicKey || key.rsaPublicKey;
^
TypeError: Cannot read property 'publicKey' of undefined
at /home/ethreil/Desktop/codestudio/firebasesdk.js:40:26
at /home/ethreil/Desktop/codestudio/node_modules/lru-memoizer/index.js:81:20
at Array.forEach (<anonymous>)
at /home/ethreil/Desktop/codestudio/node_modules/lru-memoizer/index.js:77:17
at /home/ethreil/Desktop/codestudio/node_modules/jwks-rsa/lib/wrappers/cache.js:22:18
at /home/ethreil/Desktop/codestudio/node_modules/jwks-rsa/lib/JwksClient.js:51:18
at /home/ethreil/Desktop/codestudio/node_modules/jwks-rsa/lib/JwksClient.js:104:18
at Request._callback (/home/ethreil/Desktop/codestudio/node_modules/jwks-rsa/lib/JwksClient.js:88:20)
at Request.self.callback (/home/ethreil/Desktop/codestudio/node_modules/request/request.js:185:22)
МОЙ КОД
var admin = require('firebase-admin');
var refreshToken; // Get refresh token from OAuth2 flow
var serviceAccount = require('/home/ethreil/Desktop/codestudio/ggbsdk.json');
var uid = "some-uid";
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://goodgamebuzz.firebaseio.com'
});
var fs = require('fs');
var cert = fs.readFileSync('/home/ethreil/Desktop/codestudio/privateKey.pem');
var jwt = require('jsonwebtoken');
var token = jwt.sign({
expiresIn: 36000 ,
audience: "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit" ,
issuer: 'myserviceaccount@gmail.com' ,
subject: 'myservicecaccount@gmail.com' ,
iat: Math.floor(Date.now())
} ,
cert
,
{
algorithm: 'RS256' ,
keyid: '7a3d1904f18e257948831eab803e12b7971e13ab'
});
const kid = '7a3d1904f18e257948831eab803e12b7971e13ab';
var jwksClient = require('jwks-rsa');
var client = jwksClient({
cache:true ,
jwksUri: 'https://goodgamebuzz.com/wp-json/jwt-auth/v1/token/validate'
});
client.getSigningKey(kid, function(err, key) {
var signingKey = key.publicKey || key.rsaPublicKey;
callback(null, signingKey);
});
jwt.verify(token, cert, {
algorithms: 'RS256' ,
audience: 'goodgamebuzz' ,
issuer: "https://securetoken.google.com/goodgamebuzz" ,
subject: uid
} ,
function(err, decoded) {
console.log(decoded) // bar
});