Facebook Connect Publish Stream JS帮助

时间:2009-11-24 15:22:36

标签: javascript facebook

我的网站允许用户通过Facebook Connect登录,并允许他们更新我们网站的状态字段。我想在状态更新字段下方添加一个复选框,允许他们将此更新发布到他们的Facebook个人资料中,如果他们愿意的话。为了做到这一点,我需要用户授予我们的应用程序权限,以便通过使用JS函数FB.Connect.showPermissionDialog http://developers.facebook.com/docs/?u=facebook.jslib.FB.Connect.showPermissionDialog提示用户获取'publish_stream'权限来支持他们的Facebook个人资料。

我遇到的问题是弄清楚我是否需​​要提示用户这样做。基本上我想要的用户体验是,当用户第一次检查此框时,我希望他们被提示授予此权限。一旦获得批准,如果他们再次检查该框,我将来不需要提示他们。我似乎无法弄清楚在该复选框的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已经能够解决这个问题。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我最近开发了一个使用Facebook Connect的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
    });
});

答案 1 :(得分: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函数的第二个参数是一个返回结果的回调函数。