Estoy usando la autenticación de Twitter de firebase para mi proyecto. La variable de autenticación que devuelve las credenciales no contiene el nombre de usuario de Twitter de la cuenta, sino todo lo demás.
Necesito trabajar con el nombre de usuario, ¿hay alguna forma de solucionar esto? Los usuarios que se muestran en la consola se parecen a esta Firebase Console
¿Cómo obtengo el identificador respectivo de un uid?
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.1.2/firebase-app.js"; import { getAuth, signInWithPopup, TwitterAuthProvider } from "https://www.gstatic.com/firebasejs/9.1.2/firebase-auth.js"; const app = initializeApp(firebaseConfig); const provider = new TwitterAuthProvider(); const auth = getAuth(); document.querySelector('button').addEventListener('click', authenticate); function authenticate() { signInWithPopup(auth, provider) .then((result) => { const credential = TwitterAuthProvider.credentialFromResult(result); const token = credential.accessToken; const secret = credential.secret; const user = result.user; console.log(result) }).catch((error) => { const errorCode = error.code; const errorMessage = error.message; const email = error.email; const credential = TwitterAuthProvider.credentialFromError(error); console.log(error); }); }¿Hay alguna manera de obtener el nombre de usuario de esta variable 'auth'? Verifique el código a continuación para ver la referencia.
import { getAuth } from "https://www.gstatic.com/firebasejs/9.1.2/firebase-auth.js" const auth = getAuth(); auth.onAuthStateChanged(user => { if(user){ // window.location.href = "/home/index.html" }else{ } })Hola, puedes probar esto:
firebase.auth().signInWithPopup(new firebase.auth.TwitterAuthProvider()) .then((userCredential) => { // here you get the username console.log(userCredential.additionalUserInfo.username); }) .catch((error) => { console.log("error occurred"); });o bien, puede obtener la información usando esto si tiene una identificación:
let url = `https://api.twitter.com/1.1/users/show.json?user_id=${the_uid_from_provider_data}`; fetch(url) .then(response => { let data = response.json(); console.log(data); }) .catch(error => { // handle the error });Creo que te refieres al identificador de Twitter (también llamado nombre de pantalla) por "nombre de usuario"
const provider = new TwitterAuthProvider(); const userInfo = await signInWithPopup(auth, provider); console.log(userInfo._tokenResponse.screenName) // twitter handle