带有Facebook登录名的Angular 7:即使退出Facebook应用后,登录状态仍显示为已连接

时间:2019-05-09 05:12:08

标签: angular facebook-graph-api login facebook-javascript-sdk angular7

我正在开发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,也无法从登录名路由到主页。

0 个答案:

没有答案