まずはコードから。
コピペで動くと思います!
export const persistLoginWithTwitter = () => async dispatch => {
var provider = new firebase.auth.TwitterAuthProvider();
var anonymous_user = await firebase.auth().currentUser
await anonymous_user.linkWithPopup(provider).then(function (usercred) {
console.log('アカウントの紐付け成功')
}, function (error) {
console.log("Error upgrading anonymous account", error);
});
}
これで普通に匿名ログイン中のユーザーをtwitterアカウントに繋げることができます。
注意するべきことは、
linkWithPopUp.then() の内部において、usercred.userをしてもtwitterのuser情報は出てこないところです。
var twitter_user = usercred.user.providerData[0]
こんな感じでtwitterのphotoURLとかdisplayNameが欲しいときは取り出します。
anonymousUserUpdateアクションで自分はdisplayNameとうが欲しかったので。。
実際にはこんな感じになりました。
export const persistLoginWithTwitter = () => async dispatch => {
var provider = new firebase.auth.TwitterAuthProvider();
var anonymous_user = await firebase.auth().currentUser
await anonymous_user.linkWithPopup(provider).then(function (usercred) {
var twitter_user = usercred.user.providerData[0]
console.log(user)
console.log(user.photoURL)
dispatch(anonymousUserUpdate(twitter_user, anonymous_user.uid))
}, function (error) {
console.log("Error upgrading anonymous account", error);
});
}