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几乎做了同样的事情并且效果很好.
请!帮我!
你可以使用胖箭头函数来使用相同的上下文...
login() {
FB.login((result: any) => {
this.loged = true;
this.token = result;
}, { scope: 'user_friends' });
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17907 次 |
| 最近记录: |