2

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 已阅读该站点上的一篇文章”的状态。但是,如果他们再次访问它,它不会被添加

4

2 回答 2

1

这违反了Facebook 平台政策。见第四部分第 3 部分:

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

未经用户许可,您不能发布到用户的时间线\墙上。《独立报》和《卫报》与 Facebook 有一项独特的安排,可以免除这些限制。

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

在开始新项目之前查看平台政策和促销清单总是好的。

于 2012-02-10T04:20:02.413 回答
0

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

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

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

于 2012-08-06T03:28:20.670 回答