2016-07-18 15 views
0

私はFacebookのログインボタンコンポーネントを作成しました。私はデフォルト以外のアクセス許可が必要でした。 ここでの問題は、ログイン後、ページを更新した後に再びログアウトしてしまうことです。Facebookのログイン状態を維持しますか?

ログイン後に何かをセッションまたはクッキーに保存する予定ですか?

コンポーネント

let FbLoginComponent = React.createClass ({ 
    getInitialState() { 
     return { 
      is_loggedin  : 0, // 0 == not logged in. 
      is_not_authorized: 0, // 0 == not authorized. 
      intv    : 0 
     } 
    }, 
    componentDidMount() { 
     // Check if user is logged in 
     this.getLoginStatus(); 
     console.log (this.state); 
    }, 
    getLoginStatus() { 

     if (typeof FB !== 'undefined') { 
      clearInterval (this.state.intv); 

      FB.getLoginStatus ((r) => { 
       if (r.status === 'connected') { 
        this.setState ({ is_loggedin: 1, is_not_authorized: 0 }); 
       } else if (r.status === 'not_authorized') { 
        this.setState ({ is_loggedin: 1, is_not_authorized: 1 }); 
       } else { 
        this.setState ({ is_loggedin: 0, is_not_authorized: 0 }); 
       } 
      }); 
     } else { 
      console.log ('Oops, let try again later.'); 
      if (this.state.intv === 0) { 
       let intv = setInterval (this.getLoginStatus, 1000); 
       console.log ('intv: ' + intv); 
       this.setState ({ intv }); 
      } 
     } 
    }, 
    toggleLogin() { 
     if (this.state.is_loggedin === 1) { 
      FB.logout ((r) => { 
       if (typeof r.authResponse !== 'undefined') { 
        this.setState ({ is_loggedin: 0, is_not_authorized: 0 }); 
        console.log ('logged out.'); 
       } else { 
        console.log ('User already logged out.'); 
       } 
      }); 
     } else { 
      FB.login ((r) => { 
       if (r.status === 'connected') { 
        this.setState ({ is_loggedin: 1, is_not_authorized: 0 }); 
       } else if (r.status === 'not_authorized') { 
        this.setState ({ is_loggedin: 1, is_not_authorized: 1 }); 
       } else { 
        this.setState ({ is_loggedin: 0, is_not_authorized: 0 }); 
       } 
      }, { scope: 'email, publish_actions' }); 
     } 
    }, 
    renderButton() { 
     console.log ('rendering.......'); 
     console.log (this.state); 
     if (this.state.is_loggedin === 1) { 
      return (
       <img src="/images/fb-logout-btn.jpg" onClick={this.toggleLogin} className="fb-login-btn"/> 
      ) 
     } else { 
      return (
       <img src="/images/fb-login-btn.jpg" onClick={this.toggleLogin} className="fb-login-btn"/> 
      ) 
     } 
    }, 
    render() { 
     return (
      <div className="fb-login-component"> 
       {this.renderButton()} 
      </div> 
     ) 
    } 
}); 

ReactDOM.render (<FbLoginComponent/>, document.getElementById ('fb-login-btn-root')); 

答えて

関連する問題