如何使用react在facebook中获取facebook uid?

时间:2018-01-14 07:44:44

标签: reactjs firebase firebase-realtime-database

我正在使用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?

2 个答案:

答案 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