2016-09-09 5 views
-1

最初は偽の反応変数を使用しているページがありますが、ログインするとFacebookやGoogleを使用してtrueに変更され、ページの内容が変更されます。Meteor loginWIthGoogleの問題

私はfacebookを使用してログインするとすべてうまくいくが、googleを使用してログインすると、変数isAuthenticatedはtrueに変わらないが、別のページに移動すると、ユーザーがログインしたときに表示される何が起こっているのかは、私が(Meteor.userId())Googleとの認証がまだ行われていない場合、この手順をスキップして変数の値を変更しないということです。認証が完了するまでどのように待つことができますか?私は、ユーザーが最初にログインしていないときには、条件、それだけでdoesntの仕事に入るGoogleとログインしてもう一度クリックすると

を。これは、Googleの方法と私のログインです:。

'click #google-login': function(event) { 
     event.preventDefault(); 
     Meteor.loginWithGoogle({}, function(err){ 
      if (err) { 
       return swal({ 
        title: "Google Login Failed", 
        timer: 1700, 
        showConfirmButton: false, 
        type: "error" 
       });     
       throw new Meteor.Error("Google login failed"); 
       Template.instance().authenticated.set(false); 
      } 
     }); 
      if(Meteor.userId()){ 
      //Enable idea submission 
      Template.instance().authenticated.set(true); 
      } 
      //Update last login 
      Meteor.users.update({ _id: Meteor.userId() }, {$set: {"metadata.lastLoginAt": new Date()}}); 
    } 

任意の助けになりありがとう!あなたはmeteor.loginWithGoogle機能にReactiveVarを設定することはできません

答えて

2

まず最初は、この

Tracker.autorun(function(){ 
    if (Meteor.userId()) { 
    //Enable idea submission 
    Template.instance().authenticated.set(true); 
//Update last login 
    Meteor.users.update({ 
     _id: Meteor.userId() 
    }, { 
     $set: { 
      "metadata.lastLoginAt": new Date() 
     } 
    }); 
} 
}); 

'click #google-login': function(event) { 
event.preventDefault(); 
var self = Template.instance(); 
Meteor.loginWithGoogle({}, function(err) { 
    if (err) { 
     return swal({ 
      title: "Google Login Failed", 
      timer: 1700, 
      showConfirmButton: false, 
      type: "error" 
     }); 
     throw new Meteor.Error("Google login failed"); 
     self.authenticated.set(false); 
    } else {} 
}); 

} 
してみてください
関連する問題