【问题标题】:How to get facebook uid in firebase using react?如何使用react在firebase中获取facebook uid?
【发布时间】:2018-06-23 04:11:47
【问题描述】:

我正在通过 facebook 使用 react 和 firebase auth。我正在使用以下代码使用 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

Logging result.user 只显示登录用户的 displayName 和电子邮件 ID。有没有办法获取登录人的 facebook uid?

【问题讨论】:

  • 您是否正确配置了 fb 应用并添加了所需的权限?
  • 是的,我正在获取用户的显示名称和电子邮件 ID。我需要此人的 uid 来检查已经存在的数据库
  • 好的,显示您的代码,以便我更好地帮助您
  • 请检查编辑

标签: reactjs firebase firebase-realtime-database


【解决方案1】:

您不会自动获取 uid。您需要调用 facebook 的 graph 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));
      }
    });

  }

【讨论】:

    【解决方案2】:

    试试这个:

    firebase.auth().currentUser.providerData[0].uid

    更多信息请访问: https://firebase.google.com/docs/auth/web/manage-users

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 2019-07-09
      • 2018-12-31
      相关资源
      最近更新 更多