如何自动发布到时间轴?

时间:2011-12-05 11:07:30

标签: facebook opengraph facebook-authentication facebook-timeline

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

现在我可以使用按钮在时间轴上写字。我也可以自动完成(但每次他们转到我不需要的文章时都会发生这种情况)。但是我需要添加的是一些逻辑,如下所示

  1. 如果用户已登录但未授权应用
    • 显示授权申请的按钮
  2. 如果用户首次登录并且已获得授权和访问文章
    • 自动发布“X已在Z上读取Y”到他们的个人资料和FB
  3. 如果用户已登录且app已授权并再次访问该文章
    • 不要发布任何内容
  4. 这有意义吗?这方面有什么例子吗?所以基本上对时间表的影响并不是问题,只是我需要进行的各种检查。

    修改

    好的,由于某种原因,这是有效的(检查他们是否被授权)但如果我取出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已阅读网站上的文章”的状态将被添加。但是,如果他们再次访问它,它就不会被添加

2 个答案:

答案 0 :(得分:1)

这是针对Facebook Platform Policy的。见第IV部分第3部分:

  

如果用户授予您发布权限,您必须先获得用户的同意,然后才能代表用户采取任何操作,例如发布内容或创建活动。

在未事先征得他们许可的情况下,您无法发布到用户的时间轴\ wall。 “独立报”和“卫报”与Facebook有独特的安排,可以免除这些限制。

这种情况会让您发出措辞强烈的电子邮件警告,或者更严重的是,会导致开发者帐户停用。

在开始一个新项目之前,先了解Platform Policies and Promotions Checklist总是很好。

答案 1 :(得分:0)

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

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

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