我正在使用facebook和firebase auth使用facebook。我使用以下代码使用Facebook登录。
const result = await auth().signInWithPopup(provider)
完整的代码是
import React, {
Component
} from 'react'
import './StartPage.css'
import fire from '../../fire.js'
import {
provider,
auth
} from '../../fire.js';
class StartPage extends Component {
constructor(props) {
super(props)
this.login = this.login.bind(this)
this.loggedIn = this.loggedIn.bind(this)
}
async login() {
provider.addScope('user_birthday');
const result = await auth().signInWithPopup(provider)
console.log(result)
console.log(result.credential.accessToken)
this.setState({
user: result.user
});
console.log("Logged in")
this.props.history.push('/vote')
}
loggedIn() {
console.log('meh')
// make check for login here
this.props.history.push('/vote')
}
render() {
return ( <
div className = "StartPage" >
<
div className = "StartPage-up" >
<
div className = "StartPage-up-logo-container" >
<
img className = "StartPage-up-logo"
src = "http://koyilandykoottam.in/images/home/logo.png" / >
<
/div> <
div className = "StartPage-up-poy" > PERSON OF THE YEAR < /div> < /
div > <
div className = "StartPage-down" >
<
button className = "StartPage-facebook-login"
onClick = {
this.login
} >
Login with facebook <
/button> < /
div > <
/div>
)
}
}
export default StartPage
记录result.user只显示登录用户的displayName和email id。有没有办法让登录的人的facebook uid?
答案 0 :(得分:0)
你没有自动获得uid。你需要调用facebook的图形api来获取数据。一种方法是在登录后重定向时获取数据,所以......
componentDidMount() {
auth.getRedirectResult().then(result => {
if (result.credential) {
var token = result.credential.accessToken;
axios
.get(`https://graph.facebook.com/me?access_token=${token}&fields=id,name`
)
.then(result => console.log({ myData: result.data.data }))
.catch(error => console.log(error));
}
});
}
答案 1 :(得分:0)
尝试一下:
firebase.auth()。currentUser.providerData [0] .uid
更多信息,请访问: https://firebase.google.com/docs/auth/web/manage-users