我正在开发angular 7应用程序,并且试图登录Facebook。我的登录页面上有一个名为“ Facebook”的按钮,用户可以通过该按钮登录我的应用程序。
**情况1:我已经登录到Facebook应用。 **
我加载了我的应用程序,然后从登录页面单击Facebook按钮。登录可以正常进行。
**情况2:我未登录Facebook应用。 **
我加载了我的应用程序,然后从登录页面单击Facebook按钮。弹出Facebook登录表单,要求登录Facebook应用。输入Facebook凭据后,登录即可正常进行。
**案例3:我正在加载我的应用程序,但在登录我的应用程序之前先从Facebook注销**。
在这里,当加载登录页面时,我已登录到Facebook。但是我先从Facebook注销,然后再单击登录页面中的Facebook按钮。 现在,如果我从登录页面单击Facebook按钮,loginstatus显示为已连接,但是我无法检索任何用户信息。 Facebook登录表单不会在这里弹出。 我仍然可以访问USERID,ACCESS TOKEN等。 当我重新加载页面并单击Facebook按钮时,它属于情况2的情况。
这是我在ngOnInit()中拥有的内容,当从“登录”页面中单击Facebook按钮时,就会调用socialSignIn()。
ngOnInit() {
(window as any).fbAsyncInit = function() {
FB.init({
appId : 'xxxxxx',
cookie : true,
xfbml : true,
version : 'v3.1'
});
FB.AppEvents.logPageView();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
socialSignIn() {
FB.login((response)=>
{
console.log(' FB.login : ',response);
if (response.authResponse)
{
console.log('login success - userid : ' , response.authResponse.accessToken);
this.accessToken = response.authResponse.accessToken;
this.userID = response.authResponse.userID;
console.log('access token : ' , this.accessToken);
console.log('userid : ' , this.userID);
FB.api('/me', { fields: 'id,name,first_name,middle_name,last_name,email'},
function(response) {
console.log(response);
if (response && !response.error) {
console.log(response);
}
else{
console.log('sign in');
}
});
}
else
{
console.log('User login failed');
}
});
}
我希望从Facebook注销时会自动从应用程序注销。 有人可以帮我弄这个吗 ?谢谢。
另一个问题是,即使我在SocialSignIn()方法末尾使用this.router.navigate,也无法从登录名路由到主页。