Reactjs 如何从facebook存储令牌,以便在react js中成功登录?

Reactjs 如何从facebook存储令牌,以便在react js中成功登录?,reactjs,facebook,authentication,access-token,Reactjs,Facebook,Authentication,Access Token,我正在尝试在我的应用程序中使用facebook登录问题是,我可以在控制台中看到,我正在使用正确的facebook凭据获取访问令牌,但我无法存储该令牌,因为登录流不完整。有人能告诉我如何存储令牌并完成用户登录吗 import React, { Component } from "react"; import { EMAIL_REGEX } from "../../../common/constants/variables"; import IntlMessa

我正在尝试在我的应用程序中使用facebook登录问题是,我可以在控制台中看到,我正在使用正确的facebook凭据获取访问令牌,但我无法存储该令牌,因为登录流不完整。有人能告诉我如何存储令牌并完成用户登录吗

import React, { Component } from "react";
import { EMAIL_REGEX } from "../../../common/constants/variables";
import IntlMessages from "../../../common/constants/IntlMessages";
// import Facebook from "./facebook";
import style from "../../../theme/style";
import FacebookLogin from "react-facebook-login";

export default class Comp extends Component {
  constructor(props) {
    super(props);
    this.state = {
      email: "",
      password: "",
      emailError: "",
      passError: "",
      remember: true,
      isLoggedIn: false,
      userID: "",
      name: "",
      picture: ""
    };
  }

  submitLogin = async () => {
    const error = await this.checkLogin();
    if (error) {
      return;
    } else {
      const { password, email } = this.state;
      this.props.loginUser({ email, password });
    }
  };

  componentDidUpdate(prevProps, prevState) {
    if (prevProps.loginInfo != this.props.loginInfo) {
      if (!this.props.loginInfo.status) {
        this.props.alertPopUp({
          text: ["Incorrect Credentials are entered"],
          open: true,
          type: "error",
        });
      } else {
        this.props.toggleModal();
        this.props.authenticateUser(true);
      }
    }
  }
//facebook response function
  responseFacebook = response => {
     console.log(response.accessToken);

    this.setState({
      isLoggedIn: true,
      userID: response.userID,
      name: response.name,
      email: response.email,
      picture: response.picture.data.url
    });
  };

 componentClicked = (data) => {
    console.log("data", data);
  };

  checkLogin = () => {
    this.setState({
      emailError: "",
      passError: "",
    });
    let resolveBol = false;
    return new Promise((resolve, reject) => {
      if (this.state.email.length < 1) {
        this.setState({ emailError: "påkrævet" });
        resolveBol = true;
      }
      if (this.state.password.length < 1) {
        resolveBol = true;
        this.setState({ passError: "påkrævet" });
      }
      if (this.state.email.length > 1 && !EMAIL_REGEX.test(this.state.email)) {
        this.setState({ emailError: "Ugyldig e-mailadresse" });
        resolveBol = true;
      }
      resolve(resolveBol);
    });
  };
  render() {
    return (
      <React.Fragment>
        <div className="modal-col">
          <button
            type="button"
            className="close"
            onClick={() => this.props.toggleModal()}
          >
            <i className="fal fa-close"></i>
          </button>
          <h1>
            <IntlMessages id="login.heading" />
          </h1>
          <p>
            <IntlMessages id="login.detail" />
          </p>
          <div className="form">
            <div className="form-group">
              <input
                type="email"
                className="form-control"
                placeholder="Enter your Email"
                value={this.state.email}
                onChange={(e) => this.setState({ email: e.target.value })}
              />
              <span
                className={this.state.emailError.length > 0 ? "errorLogin" : ""}
              >
                {this.state.emailError}
              </span>
            </div>
            <div className="form-group">
              <input
                type="password"
                className="form-control"
                placeholder="Enter your Password"
                value={this.state.password}
                onChange={(e) => this.setState({ password: e.target.value })}
              />
              <span
                className={this.state.passError.length > 0 ? "errorLogin" : ""}
              >
                {this.state.passError}
              </span>
            </div>
            <div className="form-group clearfix">
              <div className="pull-left">
                <div className="custom-control custom-checkbox">
                  <input
                    type="checkbox"
                    className="custom-control-input"
                    id="customCheck"
                    name="example1"
                    checked={this.state.remember}
                    onChange={(e) =>
                      this.setState({ remember: e.target.checked })
                    }
                  />
                  <label className="custom-control-label" htmlFor="customCheck">
                    <IntlMessages id="login.remember.checkbox" />
                  </label>
                </div>
              </div>
              <div
                className="pull-right"
                style={style.link}
                onClick={() => {
                  this.props.toggleModal();
                  setTimeout(() => {
                    this.props.toggleForget();
                  }, 350);
                }}
              >
                <a className="forget-password">
                  <IntlMessages id="login.forget" />
                </a>
              </div>
            </div>
            <div className="form-group">
              <ul className="btn-list">
                <li className="w-50">
                  <button
                    className="w-100 bg-warning"
                    onClick={this.submitLogin}
                  >
                    <IntlMessages id="login.button" />
                  </button>
                </li>
                <li className="w-50">
                  // facebook login button comp
                  <FacebookLogin
                    appId="285970052812801"
                    autoLoad={false}
                    fields="name,email,picture"
                     onClick={this.componentClicked}
                    callback={this.responseFacebook}
                    cssClass="w-100 bg-info"
                  />
                </li>
              </ul>
            </div>
            <hr />
            <div className="form-group">
              <p>
                <IntlMessages id="login.detail.second" />
              </p>
              <a
                className="btn bg-light btn-default w-100"
                onClick={() => this.props.toggleUserSign()}
              >
                <IntlMessages id="login.create.user" />
              </a>
            </div>
          </div>
        </div>
      </React.Fragment>
    );
  }
}

import React,{Component}来自“React”;
从“../../../common/constants/variables”导入{EMAIL_REGEX}”;
从“../../../common/constants/IntlMessages”导入IntlMessages;
//从“/Facebook”导入Facebook;
从“../../../theme/style”导入样式;
从“反应facebook登录”导入FacebookLogin;
导出默认类Comp扩展组件{
建造师(道具){
超级(道具);
此.state={
电邮:“,
密码:“”,
电子邮件错误:“”,
过路人:“,
记住:没错,
伊斯洛格丁:错,
用户ID:“”,
姓名:“,
图片:“
};
}
submitLogin=async()=>{
const error=等待此消息。checkLogin();
如果(错误){
返回;
}否则{
const{password,email}=this.state;
this.props.logiuser({email,password});
}
};
componentDidUpdate(prevProps、prevState){
if(prevProps.loginInfo!=此.props.loginInfo){
如果(!this.props.loginInfo.status){
这个.props.alertPopUp({
文本:[“输入的凭据不正确”],
开放:是的,
键入:“错误”,
});
}否则{
this.props.toggleModal();
this.props.authenticateUser(true);
}
}
}
//facebook响应功能
responseFacebook=响应=>{
log(response.accessToken);
这是我的国家({
伊斯洛格丁:是的,
userID:response.userID,
name:response.name,
电子邮件:response.email,
图片:response.picture.data.url
});
};
组件单击=(数据)=>{
控制台日志(“数据”,数据);
};
checkLogin=()=>{
这是我的国家({
电子邮件错误:“”,
过路人:“,
});
设resolveBol=false;
返回新承诺((解决、拒绝)=>{
如果(this.state.email.length<1){
setState({emailError:“påkrævet”});
resolveBol=true;
}
if(this.state.password.length<1){
resolveBol=true;
这个.setState({passeror:“påkrævet”});
}
如果(this.state.email.length>1&&!email_REGEX.test(this.state.email)){
this.setState({emailError:“Ugyldig e-mailadresse”});
resolveBol=true;
}
解析(resolveBol);
});
};
render(){
返回(
this.props.toggleModal()}
>

this.setState({email:e.target.value}) /> 0?“错误登录”:“} > {this.state.emailError} this.setState({密码:e.target.value})} /> 0?“错误登录”:“} > {this.state.passeror} this.setState({记住:e.target.checked}) } /> { this.props.toggleModal(); 设置超时(()=>{ this.props.toggleForget(); }, 350); }} >
  • //facebook登录按钮组件

this.props.toggleUserSign()} > ); } }