有关Facebook对话框提要,共享和类似按钮的建议

时间:2011-08-19 13:29:32

标签: facebook dialog facebook-like feed share

我对Facebook的对话框提供,分享器和类似按钮感到困惑(我是Facebook及其行话的小说)

在我的网站上,我想要以下

  • 在页面顶部有一个按钮,人们可以将我的网站分享到他们的墙上
  • 在页面上有一个按钮,用户可以在我的网站上将他们的主页分享到他们的墙上
  • 有一个按钮,用户可以将他们(事件)的个别项目分享到他们的墙上

我已经阅读了分享器按钮,而不是喜欢按钮,但我看到了Like按钮的问题。我觉得有些东西只能被喜欢过一次。可能希望多次共享用户的事件(以提醒他们的Fb用户该事件)

我已经看到BBC使用对话框提示按钮将项目发布到墙上,看起来没问题,但我无法让弹出窗口工作。

我的要求是为我提到的三种方案中的每种方案设置不同的链接,每种方案的描述不同,但共享我的网站徽标。

我读过这么多,以至于我现在完全混淆了加上Fb所拥有的所有API。它只是疯了(或者在我看来是这样)

如果有人可以通过声音建议和每个按钮的一些示例代码帮助清除雾,我将非常感激。

谢谢。

1 个答案:

答案 0 :(得分:2)

对于您所说的内容,您会想要使用Feed对话框。它足够灵活,您只需设置链接并传入一些变量即可。我没有看到提要对话框被逐步淘汰,因为你提到它们用于不同的目的。我认为他们推动使用它更容易使用,而不是被滥用。

在调用以下函数之前,您需要注册一个应用程序并确保初始化Facebook javascript SDK。如果您的弹出窗口出现问题,可能是因为您的FB init进程存在问题。我添加了第二个用于初始化Facebook的功能。这两个函数都使用jQuery,因此如果不使用它,则可能需要修改。

你可以像这样创建一个非常通用的函数:

$.shareMe = function(myName, myLink, myPicture, myCaption ) {

FB.ui(
  {
    method: 'feed',
    name: myName,
    link: myLink,
    picture: myPicture,
    caption: myCaption

  },
  function(response) {
    if (response && response.post_id) {
      alert('Thanks for Sharing.');
    } else {
      alert('Post was not published.');
    }
  }
);



}

和Facebook初始化:

$.initFacebook = function(options){

$('#fb-root').remove();

$('body').append('<div id="fb-root"></div>');

var settings = {

  'appId'       :   null,
  'callback'    :   null,
  'channelUrl'  :   null,
  'status'      :   true,
  'cookie'      :   true,
  'xfbml'       :   true

};

if ( options ) { 
    $.extend( settings, options );
}

if( typeof( xc_app_id ) == 'undefined' ) { window.xc_app_id = settings.appId; }  

window.fbAsyncInit = function() { 

    if(settings.channelUrl==null) {

        FB.init({appId: settings.appId, status: settings.status, cookie: settings.cookie, xfbml: settings.xfbml, oauth: true, authResponse: true }); 

    } else {

        settings.channelUrl=location.protocol+'//'+settings.channelUrl;

        FB.init({appId: settings.appId, status: settings.status, cookie: settings.cookie, xfbml: settings.xfbml, oauth: true, authResponse: true, channelUrl: settings.channelUrl }); 
    }

    if(typeof settings.callback == 'function'){ settings.callback.call(this); }

};

(function() {
var e = document.createElement('script'); 
e.async = true;
e.src = '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());

}

并调用它只需使用$ .initFacebook({appId,'yourAppId'});如果您需要,可以在文档中查找其他选项。