2009-11-24 46 views
0

我的網站允許用戶通過Facebook Connect登錄,並允許他們更新我們網站的狀態欄。我想在狀態更新字段的下方添加一個複選框,以便他們可以將此更新發布到他們的Facebook個人資料中,如果他們願意的話。爲了做到這一點,我需要用戶授予我們的應用程序權限,以發佈到他們的Facebook個人資料,通過使用JS函數FB.Connect.showPermissionDialog http://developers.facebook.com/docs/?u=facebook.jslib.FB.Connect.showPermissionDialog來提示用戶獲得'publish_stream'權限。Facebook Connect發佈流JS幫助

我遇到的問題是搞清楚是否需要提示用戶這樣做。基本上我想要的用戶體驗是,當用戶第一次選中此框時,我希望它們被提示授予此權限。一旦獲得批准,如果他們再次選中該複選框,我將不再需要提示他們。我似乎無法弄清楚在該複選框的onclick動作中包含哪些JS,它將檢查用戶是否已授予此許可權,如果不是,則提示他們,否則不執行任何操作。另外,在選中該框並授予權限之後,我不想執行任何操作(不重新加載頁面),但是如果他們拒絕了授予權限的請求,我希望取消選中該複選框。我想我可能需要使用FB.ApiClient.users_hasAppPermission JS功能http://developers.facebook.com/docs/?u=facebook.jslib.FB.ApiClient.users_hasAppPermission,但我仍然對這將看起來像什麼感到困惑。造成這種情況的僞代碼將是:

onclick=" 
    if(user_already_granted_permission) { do_nothing; } 
    else { 
     prompt_user_to_grant_permission { 
      wait_for_response_from_permission_dialog { 
       if(permission_granted) { do_nothing; } 
       else { uncheck_checkbox; } 
      } 
     } 
    } 
" 

一個值得一提的另一件事是,我已經驗證了用戶通過Facebook Connect登錄時,頁面被渲染。我希望別人使用Facebook Connect已經能夠解決這個問題了。在此先感謝您的幫助!

回答

1

我最近開發了使用Facebook連接,並得到一個給定用戶的好友列表中的online demo - 這是不一樣的你的情況,但我用FB.Facebook.apiClient.requireLogin來獲取用戶登錄,就像這樣:

var api_key = 'd04fba62ff27c6c84a6b767d404bcec3'; 
var channel_path = '/xd_receiver.htm'; 

/* initialize facebook API */ 
FB_RequireFeatures(['Api'], function() { 
    FB.Facebook.init(api_key, channel_path); 

    var api = FB.Facebook.apiClient; 

    api.requireLogin(function(exception){ 
     // user is logged in and my application 
     // has permissions to get friend list 
    }); 
}); 
+0

@亞歷山大 - 謝謝,但登錄的部分不是我遇到的大問題。你有沒有做過任何促使用戶發佈到他們的新聞流的發展?如果這樣會更加適用。 – 2009-11-24 16:40:33

+0

對不起,我想我沒有得到正確的問題。我還沒有使用權限api,但我想在facebook開發人員論壇中的以下帖子應該可以幫助你 - http://forum.developers.facebook.com/viewtopic.php?pid=124579#p124579 – 2009-11-25 08:39:08

0

你可以做這樣的事情:

 

FB.Facebook.apiClient.users_hasAppPermission('publish_stream', function(has_perms) { 
    if(has_perms) { 
     // User has granted the publish_stream permission 
    } else { 
     // User has not granted the publish_stream permission 
    } 
}); 
 

users_hasAppPermission函數的第二個參數是返回的檢查結果的回調。