2017-10-15 12 views
0

に割り当てられたオブジェクトを使用することができません:私はここで、角度2とFacebookのログインがログインするためのボタンで実装しようとしているFacebookのログイン方法

fbLogin() { 
this.userLogin = new UserLogin(); 
     FB.login((response : any) => { 
      if (response.authResponse) { 
       FB.api('/me', { fields: ['first_name', 'last_name', 'gender', 'email', 'location', 'name', 'birthday'] }, function (response) { 
        let user : UserLogin = new UserLogin(); 
        console.log(this.userLogin); 
        user.Name = response.name || null; 
        user.Email = response.email || null; 
        user.ContactNumber = response.contactnumber || null; 
        user.DateOfBirth = response.birthday || null; 
        user.Gender = response.gender || null; 
        user.Country = response.location || null; 
        var accessToken = FB.getAuthResponse().accessToken; 
        console.log(accessToken); 
        this.userLogin = user; 

       }); 
      } else { 
       console.log('User cancelled login or did not fully authorize.'); 
      } 
     }); 
     if(this.userLogin.Email != null){ 
      this.accountService.Login(this.userLogin).subscribe(
       user => { 
        console.log(user); 
       }, 
       err => { 
        console.log(err); 
       } 
      ) 
     } 
    } 

<button ion-button (click)="fbLogin()"><ion-icon name="logo-facebook"></ion-icon>Login using Facebook</button> 

そしてここでは、クリックイベントハンドラです

ユーザーがログインしたら、データをuser変数に渡し、public userLogin: UserLogin;に割り当てます。問題はuseruserLoginに割り当てられましたが、応答が遅れているためFB.login()の範囲外では使用できません。 提案することができます、私はどのようにuserLoginオブジェクトの応答を保存することができます同じオブジェクト上のFB.login()以外の操作を続行?

答えて

0

応答が遅れるためです。提案することができます、どのように私はuserLoginオブジェクトの応答を保存することができますか?同じオブジェクト上のFB.login()以外の操作を続行しますか?

ユーザーに渡されるコールバックから関数を呼び出すだけです。

+0

コールバックが私のために働いてくれました。なぜFB.login()の中で 'this'で変数を使用できないのかを知りたいのですか? – Vivek

関連する問題