2014-02-18 84 views
3

我在我的web應用程序上使用了facebook javascript sdk。如何註銷我的應用程序不是我的Facebook帳戶?

我使用圖形API登錄我的應用程序

當我從我的應用程序退出,

我的應用程序是註銷和我的Facebook帳戶也是註銷。

如何只註銷我的應用程序不是我的Facebook帳戶?

如果有人找到解決方案,請幫助我。

這是我的代碼 -

<script type="text/javascript">  

     var button; 
     var userInfo; 

     window.fbAsyncInit = function() { 
      FB.init({ appId: '########', 
       status: true, 
       cookie: true, 
       xfbml: true, 
       oauth: true}); 

      showLoader(true); 

      function updateButton(response) { 
       button  = document.getElementById('fb-auth'); 
       userInfo  = document.getElementById('user-info'); 
       userdata = document.getElementById('user-data'); 
       if (response.authResponse) { 
        //user is already logged in and connected 
        FB.api('/me', function(info) { 
         login(response, info); 
        }); 

        button.onclick = function() { 
         FB.logout(function(response) { 
          logout(response); 
         }); 
        }; 
       } else { 
        //user is not connected to your app or logged out 
        button.innerHTML = 'Login'; 
        button.onclick = function() { 
         showLoader(true); 
         FB.login(function(response) { 
          if (response.authResponse) { 
           FB.api('/me', function(info) { 
            login(response, info); 
           });  
          } else { 
           //user cancelled login or did not grant authorization 
           showLoader(false); 
          } 
         },         {scope:'email,user_birthday,status_update,publish_stream,user_about_me'}); 
        } 
       } 
      } 

      // run once with current status and whenever the status changes 
      FB.getLoginStatus(updateButton); 
      FB.Event.subscribe('auth.statusChange', updateButton); 
     }; 
     (function() { 
      var e = document.createElement('script'); e.async = true; 
      e.src = document.location.protocol 
       + '//connect.facebook.net/en_US/all.js'; 
      document.getElementById('fb-root').appendChild(e); 
     }()); 


     function login(response, info){ 
      if (response.authResponse) { 
       var accessToken         = response.authResponse.accessToken; 

       userInfo.innerHTML        = '<img src="https://graph.facebook.com/' + info.id + '/picture">' + info.name 
                   + "<br /> Your Access Token: " + accessToken; 


     button.innerHTML        = 'Logout'; 
       showLoader(false); 
       document.getElementById('other').style.display = "block"; 

      } 
     } 

     function logout(response){ 
      userInfo.innerHTML        = ""; 
      document.getElementById('debug').innerHTML  = ""; 
      document.getElementById('other').style.display = "none"; 
      showLoader(false); 
     } 

     //stream publish method 
     function streamPublish(name, description, hrefTitle, hrefLink, userPrompt){ 
      showLoader(true); 
      FB.ui(
      { 
       method: 'stream.publish', 
       message: '', 
       attachment: { 
        name: name, 
        caption: '', 
        description: (description), 
        href: hrefLink 
       }, 
       action_links: [ 
        { text: hrefTitle, href: hrefLink } 
       ], 
       user_prompt_message: userPrompt 
      }, 
      function(response) { 
       showLoader(false); 
      }); 

     } 
     function showStream(){ 
      FB.api('/me', function(response) { 
       //console.log(response.id); 
       streamPublish(); 
      }); 
     }   

    function share(){ 
      showLoader(true); 
      var share = { 
       method: 'stream.share', 
       u: 'http://www.appovative.com/' 
      }; 

      FB.ui(share, function(response) { 
       showLoader(false); 
       console.log(response); 
      }); 
     } 



     function setStatus(){ 
      showLoader(true); 

      status1 = document.getElementById('status').value; 
      FB.api(
       { 
       method: 'status.set', 
       status: status1 
       }, 
       function(response) { 
       if (response == 0){ 
        alert('Your facebook status not updated. Give Status Update Permission.'); 
       } 
       else{ 
        alert('Your facebook status updated'); 
       } 
       showLoader(false); 
       } 
      ); 
     } 

     function showLoader(status){ 
      if (status) 
       document.getElementById('loader').style.display = 'block'; 
      else 
       document.getElementById('loader').style.display = 'none'; 
     } 

    </script> 

回答

1

你不應該在客戶端SDK使用你的應用程序訪問令牌,因爲它可以從那裏容易提取。

看到這裏的討論:Use "app access tokens" with the Facebook Javascript SDK?

FB本身也強烈反對這樣的:https://developers.facebook.com/docs/facebook-login/access-tokens/

注意,因爲這要求使用你的應用程序的祕密,它必須永遠 在客戶端代碼或製成在可以反編譯的應用程序二進制文件中。 重要的是你的應用程序祕密永遠不會與任何人共享。 因此,只能使用服務器端代碼進行此API調用。

+0

不是OP詢問的問題的答案 – sohaiby

相關問題