具有默认“监视”操作的FB Open Graph脚本不起作用

时间:2012-05-15 23:17:56

标签: javascript facebook opengraph

//更新: 在帮助下,我设法捕获了一些修复了令牌问题的错误。我已更新代码以反映这一点。代码仍然没有在时间轴上产生事件,所以我要离开这个问题了。

原始问题:

我正在尝试使用Open Graph API构建一个简单的脚本,一旦访问者点击页面,该脚本就会将指向访问页面(包含电影)的链接推送到Facebook。

我没有使用自定义操作和对象,而是使用标准的Watch操作(https://developers.facebook.com/docs/opengraph/video/)和Video.movi​​e对象。

我基于FB的示例代码提出了这个问题:

<!-- first login-button with scope publish_actions: -->
<fb:login-button show-faces="false" width="200" max-rows="1" scope="publish_actions"    ></fb:login-button>

<!-- Then script that should push update to timeline: -->
<script type="text/javascript">
    function fbPublish(){
        FB.api(
        '/me/video.watches',
        'post',
        { 'video.movie': '<?php the_permalink(); ?>',
        'access_token': 'blablabla'  },
        function(response) {
           if (!response || response.error) {
              alert('Nope.');
           } else {
              alert('Yes.'); // any stuff
           }
        });
    }

这会触发警报'Nope'。

我已经通过curl添加了Watch动作。 关于可能发生什么的任何想法?

1 个答案:

答案 0 :(得分:0)

您仍然需要FB.login才能自动发布到用户的时间线。

FB.login(function(response) {
      // Post the action
 }, {scope: 'publish_actions'});

虽然我没有检查您的实际代码的有效性来发布操作,但问题是在您执行此操作之前,您需要得到用户的许可。 publish_actions权限是您需要的权限,但我认为它已包含在新的Auth Dialogs中。只要把它放在那里就可以了。

首先执行FB.login代码,然后弹出“允许”对话框,之后,您可以在用户的​​墙上自由发布。这是安全的一部分,Facebook用户不希望你在没有他们知道的情况下在他们的时间轴上发布。