javascript - Facebook 登录不适用于 hello.js

标签 javascript facebook reactjs hello.js

我使用 create-react-app npm 模块创建了一个示例 React 应用程序。然后我将 hello.js 添加到应用程序中,以便能够使用此 api 编写一个快速应用程序。我已经在 facebook 开发者网站上正确配置了我的应用程序 ID 等(我已经用另一个示例应用程序测试了它,但没有使用 hello.js,它工作正常)。

当我点击登录按钮时,它被重定向到 FB 登录页面,我输入了正确的凭据,它被重定向到本地主机,但没有成功响应。由于某种原因,这不起作用。而且我不知道出了什么问题。

如果有人对我做错了什么有想法,这里是代码:

import React, { Component } from 'react';
import * as hello from 'hellojs';
import logo from './logo.svg';
import './App.css';

class App extends Component {
  constructor() {
    super();
    this.state = {
      askForLogin: true
    };

    hello.init({
      facebook: "XXXXXXXXXXXXXXXX" //correct api is provided here
    });

    hello.api("me").then(function(r){
      console.log("Successful login: ", r);
      this.setState({askForLogin: false});
    }, function(e) {
      console.log("Not successful yet");
      this.setState({askForLogin: true});
    });
  }

  login() {
    const options = { display: "page" };
    const cb = () => { console.log("Login callback");}
    hello.login("facebook", options, cb);
  }

  render() {
    return (
      <div className="App">
        <div className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h2>Welcome to React</h2>
        </div>
        <p className="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
        {
          this.state.askForLogin ?
          <div>
            <button onClick={this.login}>Login to Facebook</button>
          </div> : <div></div>
        }
      </div>
    );
  }
}

export default App;

最佳答案

我能够通过显式告诉 hello.js 使用“facebook”来解决它并且它立即起作用。发布答案,以便其他人遇到问题时可能对他们有所帮助:

import React, { Component } from 'react';
import * as hello from 'hellojs';
import logo from './logo.svg';
import './App.css';

class App extends Component {
  constructor() {
    super();
    this.state = {
      askForLogin: true
    };

    hello.init({
      facebook: "XXXXXXXXXXXXXXX"
    });

    const facebook = hello.use("facebook"); //This is the new line

    facebook.api("me").then(function(r){
      console.log("Successful login: ", r);
      this.setState({askForLogin: false});
    }.bind(this), function(e) {
      console.log("Not successful yet");
      this.setState({askForLogin: true});
    }.bind(this));
  }

  login() {
    const options = { display: "page"};
    const cb = () => { console.log("Login callback");}
    hello.login("facebook", options, cb);
  }

  render() {

    return (
      <div className="App">
        <div className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h2>Welcome to React</h2>
        </div>
        <p className="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
        {
          this.state.askForLogin ?
          <div>
            <button onClick={this.login}>Login to Facebook</button>
          </div> : <div></div>
        }
      </div>
    );
  }
}

export default App;

关于javascript - Facebook 登录不适用于 hello.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060978/

相关文章:

javascript - 使用 HTML/CSS 和 Javascript 的 Domino's Tracker

javascript - HTML 5 本地存储

javascript - 如果在 DOM 中手动编辑了文本节点,如何强制 React 更新它?

facebook - 获取在时间轴上互动过的 friend - Facebook

javascript - 是否可以在 iframe 中使用类似 Facebook 的按钮?

Facebook Graph API 不返回完整的帖子数据

javascript - 使用基本 if 语句 react firebase 登录给出解析错误

reactjs - 如何解决问题 : TypeError: self. env.emit 不是函数?

javascript - 为什么 jQuery 接受数组作为参数?

javascript - webpack入口和输出路径