使用React + Meteor的持久性Google登录

时间:2018-07-23 22:55:32

标签: reactjs meteor google-signin google-login

这是我的应用

enter image description here

当我单击按钮Sign in with Google时,它会显示一个Google登录弹出窗口并登录我,并在该按钮旁边显示电子邮件,如下所示。

enter image description here

但是,当我刷新页面时,它会将我注销。 刷新后甚至不再定义Meteor.user()

如何拥有持久的登录系统。

这是我的主要组成部分:

import React from 'react';
import { Meteor } from 'meteor/meteor';

export default class NavBar extends React.Component {
    constructor(props){
        super(props);
        this.state = {
            email: ''
        }
    }
    componentDidMount(){
        console.log(Meteor.user());
        if(Meteor.user()){
            this.setState({
                    email: Meteor.user().services.google.email
            });
        }
    }
    login(){
        Meteor.loginWithGoogle({
            requestPermissions: ['email']
        }, (err) => {
            if(err){
                console.log("Error", err);
            }else{
                this.setState({
                    email: Meteor.user().services.google.email
                });
            }
        });
    }

    render(){
        return (
            <div>
                <h1>Site Title</h1>
                { this.state.email ? <h3>Logged in as {this.state.email}</h3> : null}
                <button onClick={this.login.bind(this)}>Sign in with Google</button>
            </div>
            );
    }
}

这是我的/server/main.js文件:

import { Meteor } from 'meteor/meteor';

Meteor.startup(() => {
  ServiceConfiguration.configurations.upsert(
    { service: 'google'},
    {
        $set: {
            clientId: "MY-CLIENT-ID",
            loginStyle: 'popup',
            secret: "MY-SECRET"
        }
    });
});

0 个答案:

没有答案