4

Я создаю анонимные сессии в своем приложении Firebase для сохранения пользовательских данных до создания их учетных записей. I saw that Firebase allows linking a Facebook login to an anonymous account, который звучит очень аккуратно, но оговорка этого процесса кажется тем, что я должен сам захватить токен Facebook, вне тепла и комфорта удивительного API Firebase, который кажется странно не разработанным, учитывая, сколько из входа поток Firebase, кажется, делает от имени приложений.Ссылка Facebook на Firebase Аноним Auth без вызова Facebook API

пример кода, как подключить учетную запись анонимного from their account linking docs:

var credential = firebase.auth.FacebookAuthProvider.credential(
    response.authResponse.accessToken); 

Естественно, я хочу использовать способ Firebase по получении маркера

var provider = new firebase.auth.FacebookAuthProvider(); 

firebase.auth().signInWithPopup(provider).then(function(result) { 
    // result.token or whatever would appear here 
}); 

Но если бы я был бежать, что, Я потерял бы свою анонимную сессию (и мой анонимный идентификатор пользователя, который мы хотим использовать для входа в новый Facebook).

Есть ли в любом случае, чтобы получить токен Facebook из механизма auth Firebase без входа пользователя в систему и потери анонимного сеанса, который я пытаюсь преобразовать в учетную запись, доступную в Facebook? (Цель состоит в том, чтобы не должны называть facebook API себя, тем более, что я буду добавлять Google и здесь)

ответ

3

Я думаю, что вы хотите #linkWithPopup или #linkWithRedirect:

var provider = new firebase.auth.FacebookAuthProvider(); 

user.linkWithPopup(provider).then(function(result) { 
    console.log('Party '); 
}); 

Если по какой-то причине, что не режет его, вы всегда можете выбрать, чтобы сделать себя:

  • Вход пользователя анонимно, и хранить где-то пользователь
  • Вход пользователя с поставщиком и STO повторно лексемы где-то
  • Удалить пользователь поставщика, а затем связать учетную запись с токеном

Быстрыми и грязными, например:

var googleToken; 
var anonUser; 

firebase.auth().signInAnonymously().then(function(user) { 
    anonUser = user; 
}).catch(function(error) { 
    console.error("Anon sign in failed", error); 
}); 

function signInWithGoogle() { 
    var provider = new firebase.auth.GoogleAuthProvider(); 
    firebase.auth().signInWithPopup(provider).then(function(result) { 
    googleToken = result.credential.idToken; 
    }).catch(function(error) { 
    console.error("Google sign in failed", error); 
    }) 
} 

function deleteAndLink() { 
    firebase.auth().currentUser.delete().then(function() { 
    var credential = 
     firebase.auth.GoogleAuthProvider.credential(googleToken); 
    anonUser.link(googleCredential); 
    }).then(function() { 
    console.log("Link succeeded"); 
    }).catch(function(error) { 
    console.error("Something went wrong", error); 
    }); 
} 
+0

Эй @faraz, это было именно то, что я искал. Вы ранее оставляли записку о том, что API был недокументирован, прежде чем редактировать это? (Вы добавили эти документы API на основе этого билета? Потому что, если это так, это потрясающе, это много значит для меня!) –

+0

Да, я ошибался, но я просто был лишен сна идиотом. ; D – fny

+0

ha! Я думал, вы работали в Firebase и просто добавили документы. –

Смежные вопросы