2017-06-23 5 views
3

私は問題がありますFacebook SDK javascript v2.9でログアウトするには、AngularJSアプリケーションを実行して、HTMLでAPIを読み込み、Facebook APIをコントローラに実装します。Facebook API javascript FB.logout 'X-Frame-Options'を 'deny'に設定したため、フレームに 'https://www.facebook.com/home.php'を表示することを拒否しました

私はonclickのアクションでFB.logout()を行うと、私は次のエラーを取得する:「拒否「に」X-フレーム・オプションを「が設定されているため、フレームに」

」を表示するために拒否

HTMLコード

<div class="top-content">  
    <!--content--> 
    <fb:login-button class="btn-login" scope="public_profile,email" 
     onlogin="doFbLogin();" data-button-type="continue_with" data- 
     auto-logout-link="false" data-use-continue-as="true" data- 
     size="large"> 
    </fb:login-button> 
    <button onclick="FB.logout()" class="btn">Logout</button>  
    </div> 

    <script> 
     window.fbAsyncInit = function() { 
      FB.init({ 
       appId   : 'API-KEY', 
       autoLogAppEvents : true, 
       status   : true, 
       xfbml   : true, 
       version   : 'v2.9' 
      }); 
      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 = "//connect.facebook.net/es_ES/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 

    </script> 

AngularJSコントローラコード

appController.controller('LoginCtrl', ['$scope','$window','$location','$http','sendLoginParams','checkCreds', 'setCreds','setUserSession', 
    function LoginCtrl($scope, $window,$location,$http, sendLoginParams, checkCreds, setCreds, setUserSession){ 
     $scope.loggin = true;   
     $window.doFbLogin = function(){       
      var fb_token; 

      function checkLoginState() { 
       $window.FB.getLoginStatus(function(response) { 
        fb_token = response.authResponse.accessToken; 
        statusChangeCallback(response); 
       }); 
      }; 
      function statusChangeCallback(response) { 
       console.log('statusChangeCallback'); 
       console.log(response); 

       if (response.status === 'connected') {      
        facebookLogin(); 
       } 
      } 



      facebookLogin = function() {     
       $window.FB.api('/me',{ fields: 'id, name, email' }, function(response) { 
        console.log(response); 
        console.log('Successful login for: ' + response.name); 
        console.log('Successful login for: ' + response.email); 
        var id = parseInt(response.id); 
        var postData = { 
         "user_fb_id":id,     
         "user_fb_token": fb_token, 
         "user_email":response.email, 
         "user_avatar":"http://graph.facebook.com/" + response.id + "/picture?type=normal", 
        }; 


        $http.post("http://localhost:8080/webserver/rest/usrs/fblogin",postData, 
         { 
          'Content-Type':'application/json' 
         } 
        ).success(function (success){ 

         var resp = JSON.stringify(success); 
         var objResp = JSON.parse(resp);      
         if(objResp.user_online){              
          setCreds(success.user_alias,success.user_password);       
          setUserSession(success);       
          $location.path("/"); 
         }     

        }) 
        .error(function (failures){     
         console.error(failures); 
        }); 


       });     

      };     

      checkLoginState();       
     }; 

    } 
]); 
+0

あなたのアプリは(i)フレームをどのように使っていますか? – CBroe

答えて

0

解決策は非常に簡単です。 UR1をログアウトするには、http deleteメソッドを呼び出します。 。

$window.FB.api('me/permissions?success:true', 'delete', function(response => { 
    console.log('Log out'). 

: プロトタイプコードは は(あなたがFacebookのから取得access_token${token}を置き換えるこの(角コード)のようなものです、あなたのコードで

url = "https://graph.facebook.com/v2.7/me/permissions?access_token=${token}{"success":true}"; 
http.delete(url).then(response => { 
    // do something, clean up, whatever. 
}).catch(error => { 
    console.log(" something wrong, cannot log out"); 
}; 

、私はあなたがこれを行うことによって、ログアウトことができますね//あなたがしたいものをしてください }));

関連する問題