У меня есть приложение Firebase, и я интегрирую Zapier. Они требуют, чтобы пользователи проходили аутентификацию с моим приложением через свою форму.
Способ, которым это работает, заключается в том, что Zapier будет запрашивать электронную почту и пароль у пользователя и отправлять его на мою конечную точку, чтобы получить токен доступа и использовать его с любымдальнейшие запросы.
Я не могу понять, как сгенерировать токен доступа из имени пользователя и пароля на сервере (узел js), поскольку все методы аутентификации находятся в клиентском SDK.
ИтакДо сих пор я надеялся аутентифицировать пользователя с помощью предоставленной электронной почты / пароля, сгенерировать собственный токен из их uid
и отправить его обратно в Zapier. Но я не могу этого сделать, поскольку в серверном SDK нет signInWithEmailAndPassword
или аналогичных методов.
Я знаю, что могу получить пользователя по электронной почте, но как я могу проверить пароль, чем соответствующие методы? снова доступны только в клиентском SDK?
Пока у меня есть следующий код:
const rp = require('request-promise');
app.post('/api/integrations/zapier/auth', (req, res) => {
let data = req.body
admin.auth().signInWithEmailAndPassword(data.email, data.password) // <- this method doesn't exist in the server sdk
.then(response => admin.auth().createCustomToken(response.user.id))
.then(customToken => rp({
url: `https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=${config.apiKey}`,
method: 'POST',
body: {
token: customToken,
returnSecureToken: true
},
json: true,
}))
.then(idToken => {
res.send({
accessToken: idToken,
filed: data.email
});
}).catch(error => res.status(500).send(error));
})