Javascript Firebase OAuth登录&;使用axios进行数据访问
我对Axios很陌生,对OAuth和Firebase也很陌生,所以我肯定我错过了一些愚蠢的东西 我正在尝试使用firebase的身份验证提供程序功能创建登录,然后使用Axios在我的数据库中创建用户配置文件。(我必须根据收到的数据进行大量其他API调用,只要使用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
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});