Angular 2 Facebook登录

Pau*_*ski 10 javascript facebook typescript angular

我正在开发一个需要使用Facebook帐户登录的网站.我正在使用Angular 2,当然还有TypeScript.它有效但不完全是我想要的.我无法收回用户的信息.

我们来看看代码:

import {Component} from 'angular2/core';
import {Main} from './pages/main/main';

declare const FB: any;

@Component({
  selector: 'my-app',
  templateUrl: 'app/app.html',
  directives: [Main]
})

export class AppComponent implements OnInit { 

token: any;
loged: boolean = false;
user = { name: 'Hello' };

constructor() { }

statusChangeCallback(response: any) {
    if (response.status === 'connected') {
        console.log('connected');
    } else {
        this.login();
    }
}

login() {
    FB.login(function(result) {
        this.loged = true;
        this.token = result;
    }, { scope: 'user_friends' });
}

me() {
    FB.api('/me?fields=id,name,first_name,gender,picture.width(150).height(150),age_range,friends',
        function(result) {
            if (result && !result.error) {
                this.user = result;
                console.log(this.user);
            } else {
                console.log(result.error);
            }
        });
}

ngOnInit() {
    FB.getLoginStatus(response => {
        this.statusChangeCallback(response);
    });
}
}
Run Code Online (Sandbox Code Playgroud)

基本上,当页面加载时我检查用户是否登录到Facebook,如果没有,我调用登录方法.在我的方法来获取用户的信息,就像它的名字,名字等.当我在状态浏览器控制台打印以下行记录:

Object {id: "666", name: "Paulo Henrique Tokarski Glinski", first_name: "Paulo", gender: "male", picture: Object…}
Run Code Online (Sandbox Code Playgroud)

一切还好!但是我希望得到那个Object并放入User对象!像这样的东西:

我的方法:

this.user = result;    
console.log(this.user);
Run Code Online (Sandbox Code Playgroud)

但是用户只是存在于方法内部.如果我在外面打印,它什么也不返回.
我只想在网站页面打印用户名等.我使用Angular JS几乎做了同样的事情并且效果很好.

请!帮我!

red*_*ria 7

你可以使用胖箭头函数来使用相同的上下文...

login() {
  FB.login((result: any) => {
    this.loged = true;
    this.token = result;
  }, { scope: 'user_friends' });
}
Run Code Online (Sandbox Code Playgroud)