Bu dokümanda, Firebase Admin SDK öğesini nasıl kullanacağınız gösterilmektedir programlı bir şekilde ilişkilendirmenizi sağlar. Çok öğeli kullanıcıları yönetirken kullanıcı özelliklerine erişebilmenizi sağlayan, tek faktörlü kullanıcılara sunmaya çalışın.
Başlamadan önce
Node.js'yi yükleyin Admin SDK. Diğer Admin SDK diller şu anda desteklenmiyor.
Kullanıcı edinme
Kullanıcının çok öğeliyle ilgili verilerini (ör. kayıtlı kullanıcı adları listesi)
UserRecord
nesnesinden ikinci çarpanları çağırın. Kullanıcı kaydı almak için şu numarayı arayın:
getUser()
veya getUserByEmail()
.
Aşağıdaki örnekte, çok öğeli olarak kayıtlı bir kullanıcı gösterilmektedir:
// console.log(userRecord.toJSON());
{
uid: 'some-uid',
displayName: 'John Doe',
email: 'johndoe@gmail.com',
photoURL: 'http://www.example.com/12345678/photo.png',
emailVerified: true,
phoneNumber: '+11234567890',
// Set this user as admin.
customClaims: {admin: true},
// User with Google provider.
providerData: [{
uid: 'google-uid',
email: 'johndoe@gmail.com',
displayName: 'John Doe',
photoURL: 'http://www.example.com/12345678/photo.png',
providerId: 'google.com'
}],
multiFactor: {
enrolledFactors: [
// 2FA with SMS as 2nd factor.
{
uid: '53HG4HG45HG8G04GJ40J4G3J',
phoneNumber: '+16505551234',
displayName: 'Work phone',
enrollmentTime: 'Fri, 22 Sep 2017 01:49:58 GMT',
factorId: 'phone',
},
],
},
};
Kullanıcıları listeleme
Aşağıdaki kodda, tüm kullanıcıların nasıl listeleneceği ve ikincil faktöre kaydolup kaydolmadıkları nasıl kontrol edileceği gösterilmektedir:
admin.auth().listUsers(1000, nextPageToken)
.then((listUsersResult) => {
listUsersResult.users.forEach((userRecord) => {
// Multi-factor enrolled users second factors can be retrieved via:
if (userRecord.multiFactor) {
userRecord.multiFactor.enrolledFactors.forEach((enrolledFactor) => {
console.log(userRecord.uid, enrolledFactor.toJSON());
});
}
});
})
.catch((error) => {
console.log('Error listing users:', error);
});
Kullanıcılar, uid
değerlerine göre sıralanarak gruplar halinde döndürülür. Her bir sonuç grubu
kullanıcıların listesini ve bir sonraki grubu getirmek için kullanılan sonraki sayfa jetonunu içerir.
Tüm kullanıcılar listelendiğinde pageToken
döndürülmez.
maxResult
alanı, maksimum grup boyutunu belirtir. Varsayılan ve maksimum değer 1.000'dür.
Kullanıcı oluşturma
Yeni kullanıcı oluşturmak için createUser()
numaralı telefonu arayın. İkincil faktörlere sahip yeni kullanıcılar
doğrulanmış bir e-posta adresiniz olmalıdır (emailVerified
olarak true
) ve
oturum açmak için desteklenen ilk faktördür. Her biri için en fazla 5 ikincil faktöre izin verilir
belirtir.
Bu örnekte, 2 ikincil faktöre sahip yeni bir kullanıcının nasıl oluşturulacağı gösterilmektedir:
admin.auth().createUser({
uid: '123456789',
email: 'user@example.com',
emailVerified: true,
password: 'password',
multiFactor: {
enrolledFactors: [
// When creating users with phone second factors, the uid and
// enrollmentTime should not be specified. These will be provisioned by
// the Auth server.
// Primary second factor.
{
phoneNumber: '+16505550001',
displayName: 'Corp phone',
factorId: 'phone',
},
// Backup second factor.
{
phoneNumber: '+16505550002',
displayName: 'Personal phone',
factorId: 'phone'
},
],
},
})
.then((userRecord) => {
console.log(userRecord.multiFactor.enrolledFactors);
})
.catch((error) => {
console.log(error);
});
Bir kullanıcıyı güncelleme
Mevcut bir kullanıcıyı güncellemek için updateUser()
numaralı telefonu arayın:
admin.auth().updateUser(uid: '123456789', {
multiFactor: {
enrolledFactors: [
{
// uid will be auto-generated.
phoneNumber: '+16505550003',
displayName: 'Spouse\'s phone',
factorId: 'phone',
},
{
// uid can also be specified. This is useful if a new second factor is added and an
// existing enrolled second factor is kept unmodified.
uid: 'existing-enrolled-mfa-uid',
phoneNumber: '+16505550004',
displayName: 'Personal phone',
factorId: 'phone',
},
{
phoneNumber: '+16505550005',
displayName: 'Backup phone',
factorId: 'phone',
// Enrollment time can also be explicitly specified.
enrollmentTime: new Date().toUTCString(),
},
],
},
})
.then((userRecord) => {
console.log(userRecord.multiFactor.enrolledFactors);
})
.catch((error) => {
console.log(error);
});
Yeni bir ikincil faktör ekleme
enrolledFactors
listesi kullanılarak updateUser()
adlı sağlayıcıya çağrı yapılırsa şunlar silinir:
kullanıcının mevcut ikincil faktörlerini hesaba katın. Yeni bir ikincil faktör eklemek için
mevcut olanları koruyarak, önce kullanıcıyı arayın, sonra
liste:
function enrollSecondFactor(userId, secondFactorPhoneNumber, secondFactorDisplayName) {
return admin.auth().getUser(userId)
.then((userRecord) => {
const updatedList = (userRecord.multiFactor &&
userRecord.multiFactor.toJSON().enrolledFactors) || [];
updatedList.push({
phoneNumber: secondFactorPhoneNumber,
displayName: secondFactorDisplayName,
factorId: 'phone',
});
return admin.auth().updateUser(userRecord.uid, {
multiFactor: {
enrolledFactors: updatedList,
},
});
})
.catch((error) => {
console.log(error);
});
}
İkincil faktörü kaldırma
Bir kullanıcının çok öğeli kimlik doğrulamasındaki kaydını tamamen iptal etmek için
enrolledFactors
ile null
aralığındakiler veya boş bir dizi:
admin.auth().updateUser(uid: '123456789', {
multiFactor: {
enrolledFactors: null,
},
})
.then((userRecord) => {
console.log(userRecord.multiFactor);
})
.catch((error) => {
console.log(error);
});