Я создаю веб-приложение, используя vanilla JS и firebase. Я следовал учебному пособию, которое предназначено для регистрации пользователя по электронной почте и паролю, и у меня есть код для создания пользователя, вставки записи в коллекцию базы данных «пользователи», с идентификатором пользователя и био-значением, полученным из формы. .
Это:
// sign up the user & add firestore data
auth.createUserWithEmailAndPassword(email, password).then(cred => {
return db.collection('users').doc(cred.user.uid).set({
bio: signupForm['signup-bio'].value
});
}).then(() => {
//do some other stuff
});
});
Проблема, с которой я столкнулся, заключается в том, что я пытаюсь реализовать то же самое в моем Google Auth. Я хочу иметь возможность создать запись в ' коллекция пользовательских баз данных, когда пользователь входит в систему с помощью Google. Код, который у меня есть на данный момент:
/**
* Start the auth flow and authorises to Firebase.
* @param{boolean} interactive True if the OAuth flow should request with an interactive mode.
*/
function startAuth(interactive) {
// Request an OAuth token from the Chrome Identity API.
chrome.identity.getAuthToken({interactive: !!interactive}, function(token) {
if (chrome.runtime.lastError && !interactive) {
console.log('It was not possible to get a token programmatically.');
} else if(chrome.runtime.lastError) {
console.error(chrome.runtime.lastError);
} else if (token) {
// Authorize Firebase with the OAuth Access Token.
var credential = firebase.auth.GoogleAuthProvider.credential(null, token);
firebase.auth().signInWithCredential(credential).catch(function(error) {
// The OAuth token might have been invalidated. Lets' remove it from cache.
if (error.code === 'auth/invalid-credential') {
chrome.identity.removeCachedAuthToken({token: token}, function() {
startAuth(interactive);
});
}
});
} else {
console.error('The OAuth Token was null');
}
});
}
По сути, я хочу взять функциональность из приведенного выше блока кода и применить часть, которая создает документ в коллекции пользователей, и использовать его. со вторым блоком. Если кто-нибудь может помочь мне понять, как вернуть идентификатор пользователя из Google Auth и вставить его в коллекцию «пользователи» с идентификатором документа, совпадающим с идентификатором пользователя, который будет очень полезен.
Спасибо, B
Обновление:
**// Authorize Firebase with the OAuth Access Token.
var credential = firebase.auth.GoogleAuthProvider.credential(null, token);
firebase.auth().signInWithCredential(credential)
.then(cred => {
return db.collection('users').doc(cred.user.uid).set({
bio: 'testing'
});
})
.catch(function(error) {
// The OAuth token might have been invalidated. Lets' remove it from cache.
if (error.code === 'auth/invalid-credential') {
chrome.identity.removeCachedAuthToken({token: token},
function() {
startAuth(interactive);
});
}
});**