【问题标题】:How do I publish to Timeline Automatically?如何自动发布到时间线?
【发布时间】:2011-12-05 11:07:29
【问题描述】:

http://www.independent.co.uk/http://www.guardian.co.uk/ 有一个应用程序,如果您在他们的网站上阅读一篇文章,它会在您的个人资料/时间线中写入“X 已阅读 Z 上的 Y”。

现在我可以在有按钮的情况下写入时间线。我也可以自动完成(但是每次他们访问我不需要的文章时都会发生这种情况)。但是我需要添加的是如下所示的一些逻辑

  1. 如果用户登录但应用程序未授权
    • 显示一个按钮来授权应用程序
  2. 如果用户第一次登录和应用授权并访问文章
    • 自动将“X has read Y on Z”发布到他们的个人资料和 FB
  3. 如果用户登录并且应用授权并再次访问文章
    • 不要发布任何内容

这有意义吗?周围有这方面的例子吗?所以基本上按时间线推送不是问题,只是我需要进行的各种检查。

编辑

好的,出于某种原因,这可行(用于检查它们是否被授权)但如果我取出 alert('test'); 部分,它就不起作用。有什么想法吗?

<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=123456789";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

alert('test');

    FB.init({ 
        appId:'123456789', cookie:true, 
        status:true, xfbml:true, oauth:true
    });
    
FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
    alert('Logged in and connected');
    $(read);
  } else if (response.status === 'not_authorized') {
    alert('Logged into FB but not authorised');
  } else {
    alert('Not logged into FB');
  }
});
</script>

好的,部分工作了。有一些小问题,但现在的主要问题是检查他们是否已经在时间线上发布了特定操作。如果他们有然后不要发布另一个例如因此,当他们第一次访问文章时,会添加“Jon 已阅读站点上的文章”状态。但是,如果他们再次访问它,它不会被添加

【问题讨论】:

    标签: facebook facebook-opengraph facebook-authentication facebook-timeline


    【解决方案1】:

    这违反了Facebook Platform Policy。见第四部分第 3 部分:

    如果用户授予您发布权限,您仍必须在代表用户采取任何行动(例如发布内容或创建活动)之前征得该用户的同意。

    您不能在未经用户许可的情况下发布到用户的时间线\墙上。 《独立报》和《卫报》与 Facebook 达成了一项独特的协议,可以免除这些限制。

    这种事情会给你一个措辞强硬的电子邮件警告,或者更严重的是,开发者帐户被暂停。

    在开始一个新项目之前看看Platform Policies and Promotions Checklist总是好的。

    【讨论】:

      【解决方案2】:

      由于代码中的竞争条件,您的代码仅适用于警报。 您正在异步加载 SDK(您应该这样做),然后通过立即调用 FB.init 尝试同步使用它。

      您需要定义一个函数fbAsyncInit,在其中调用FB.init。这将确保您在 SDK 加载之前不会尝试调用 FB.init

      除此之外,这一切都是为了从用户那里获得正确的权限,并遵守 Facebook 的政策。从技术上讲,这都是非常基本的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多