2011-08-12 110 views
1

我有一個小腳本,用於在用戶通過Facebook登錄並在牆上張貼一些信息時解鎖頁面上的某些內容。檢查Facebook JS-API應用程序是否已獲得許可

我想避免任何重複的帖子(垃圾郵件),如果用戶第二次訪問該頁面並重復該過程。

有沒有一種方法(詢問權限時)是否已經給出並因此跳過腳本的共享部分?

這裏是我的代碼:

$('.preview a').click(function(e) { 
       e.preventDefault(); 
       FB.login(function(response) { 
        if (response.session) { 
         FB.api('/me/feed', 'post', { 
          message: 'Just unlocked the exclusive preview of...', 
          picture: 'http://website.com/share.png', 
          link: 'http://www.website.com', 
          name: 'Name goes here', 
          description: 'Description here' 
          }, 
          function(response) { 
           if (!response || response.error) { 
            alert(response.error); 
           } else { 
            $('.preview').hide(); 
            $('.clip').show(); 
           } 
          }); 
         } 
       }, 

       {perms:'read_stream,publish_stream'}); 
      }); 

回答

0

我寫這個here的教程,這裏是一個例子:

FB.api({ method: 'fql.query', query: 'SELECT read_stream,offline_access,publish_stream FROM permissions WHERE uid=me()' }, function(resp) { 
    for(var key in resp[0]) { 
     if(resp[0][key] === "1") 
      console.log(key+' is granted') 
     else 
      console.log(key+' is not granted') 
    } 
}); 

還有一個JS REST比如有在文章僅供參考。

+0

謝謝,但將給予在我的兩個場景的積極響應。也許不同的解決方案可能以某種方式在用戶的Feed中搜索我共享的鏈接,並且只有在它沒有結果時纔會發佈。用FQL可能嗎? – Plasticated

+0

@Plasticated:好的,我會這樣做的方式是創建一個表,其中包含以下列user_id,post_id,action_type,一旦創建成功後,新記錄將被插入。因此,下次用戶連接到您的應用時,您將獲得該信息並相應地更改用戶體驗。 – ifaour

0

從2011年到2014年很多事情改變..

我做了這個解決方案,以檢查「user_friends」和「publish_actions」的權限,如果不允許兩個,迫使用戶「重新autenticate」 。只有在給出所有權限時纔會調用回調方法。

function login(cb,forceAuth) { 
    FB.getLoginStatus(function (response) { 
     if (response.status !== 'connected' || forceAuth==true){ 
      FB.login(function (response) { 
       checkPermissions(cb,false); 
      }, {scope: 'publish_actions,user_friends'}); 
     } else { 
      checkPermissions(cb); 
     } 
    }); 
} 

function checkPermissions(cb,forceAuth){ 
    FB.api(
     "/me/permissions", 
     function (response) { 
      if (response.data[0]['publish_actions']==undefined || response.data[0]['publish_actions']==0 || 
       response.data[0]['user_friends']==undefined || response.data[0]['user_friends']==0) { 
       if (forceAuth!=false) 
        login(cb,true); 
      } else { 
       cb(); 
      } 
     } 
    ); 
} 

如何使用:

login(function() { 
    myLogedAndAllowedFunction(); 
}); 
相關問題