Javascript Firebase OAuth登录&;使用axios进行数据访问

Javascript Firebase OAuth登录&;使用axios进行数据访问,javascript,oauth,firebase-realtime-database,firebase-authentication,axios,Javascript,Oauth,Firebase Realtime Database,Firebase Authentication,Axios,我对Axios很陌生,对OAuth和Firebase也很陌生,所以我肯定我错过了一些愚蠢的东西 我正在尝试使用firebase的身份验证提供程序功能创建登录,然后使用Axios在我的数据库中创建用户配置文件。(我必须根据收到的数据进行大量其他API调用,只要使用Axios就可以非常方便地完成所有操作。) 这是我到目前为止所拥有的 authenticate() { var provider = new firebase.auth.GithubAuthProvider(); co

我对Axios很陌生,对OAuth和Firebase也很陌生,所以我肯定我错过了一些愚蠢的东西

我正在尝试使用firebase的身份验证提供程序功能创建登录,然后使用Axios在我的数据库中创建用户配置文件。(我必须根据收到的数据进行大量其他API调用,只要使用Axios就可以非常方便地完成所有操作。)

这是我到目前为止所拥有的

  authenticate() {
    var provider = new firebase.auth.GithubAuthProvider();
    console.log(provider);
    firebase.auth().signInWithPopup(provider)
      .then((res) => {
        console.log(res);
        if (res.credential) {
          var token = res.credential.accessToken;
        }
        const user = axios.create({
          baseURL: fbaseUrl,
          withCredentials: true, // newly added
          headers: {
            Authorization: `Bearer ${token}`, // cf firebase docs https://firebase.google.com/docs/reference/rest/database/user-auth
          }
        });
        this.setState({uid: res.user.uid, useraxios: user, token: token});
      }).catch((err) => {
        console.log(err.message);
      }); 
  }

  testPost() {
    this.state.useraxios.post(`/users.json`, { id: this.state.uid, joinedOn: moment() })
      .then((res) => console.log(res))
      .catch((err) => console.log(err.message));  /// this errors out
  }
我目前遇到的错误是,没有“访问控制允许凭据”标题,因此不允许本地主机访问,我认为这是Firebase规则中必须排序的内容。在我添加带有credentials:true的
行之前,我只是得到了“不允许访问”的响应

我也试过了

    const user = axios.create({
      baseURL: `${fbaseUrl}/users/${res.user.uid}.json?auth=${token}`
    });

根据返回401未授权错误

当我将读写设置为true时,发布到数据库是完全正确的,所以如何格式化URL或其他内容并没有问题

我假设存在两个问题,一个是我的
axios.create
config,另一个是我的Firebase规则,但我已经阅读了这两个方面的文档,仍然非常茫然。这是一个react应用程序,但我98%确信react的东西不是问题所在


我至少在正确的轨道上吗?(我是否愚蠢地试图使用axios来实现更适合firebase内置方法的功能…?)任何帮助都将不胜感激。

这与您的功能配置有关。您需要将其添加到firebase函数/index.js中,并使用cors配置您的函数

const cors = require('cors')({origin: true});
有关更多详细信息,请参阅此url:

      firebase.auth().currentUser.getToken(true).then((token) => {
       const user = axios.create({
          baseURL: `${fbaseUrl}`,
          headers: {Authorization: token}
        });
const cors = require('cors')({origin: true});