【问题标题】:Facebook JS SDK -- Post to wall after permissions checkFacebook JS SDK——权限检查后发布到墙上
【发布时间】:2011-09-13 05:42:58
【问题描述】:

我已经在谷歌上搜索了 2 天,但找不到任何确定的信息。我遇到的所有结果都使用了不再有效的弃用代码。请帮忙。

我需要一个点击按钮...

  1. 检查扩展权限
  2. 如果尚未授予权限,请请求它们(user_likes、offline_access、publish_stream)
  3. 获得权限后,将帖子发布到用户墙
  4. 请允许我在用户离线时向他们推送墙帖

有人可以帮忙吗?

【问题讨论】:

  • 感谢 OffBySome 的这个例子。看着它,我可以看到我非常接近解决方案,但错过了 response.authResponse 中包含的 FB.login。我将在今晚实施,并报告我的发现。
  • 关于offline_access,任何人都可以确认不需要此权限以便在没有用户交互的情况下发布吗?我知道这是一个灰色区域,但用户知道这将发生,并且必须明确选择允许它。然而,我的理解是,发布到离线用户的墙上的能力需要这样做,因为 auto-post: true 被禁用。使用用户 ID,我只需要包含身份验证令牌而不需要offline_access?
  • 我昨晚实现了 OffBySome 发布的示例,效果很好。谢谢你:)

标签: facebook-graph-api facebook facebook-javascript-sdk


【解决方案1】:

这很简单。您可以调用 FB.login 来获得扩展权限。然后你可以调用 FB.ui 来发布状态(或者 FB.api 调用 /me/feed 来发布而无需用户交互,这是不受欢迎的)。为了能够在以后推送墙帖,您需要将 access_token 存储在您的服务器上以供以后使用。

<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<a href="#" onclick="return postToWall();">Post To Wall</a>
<script src="//connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({ appId: '**appID**', status: true, cookie: true, xfbml: true, oauth: true });

  function postToWall() {  
    FB.login(function(response) {
      if (response.authResponse) {
        FB.ui({
            method: 'feed', 
            name: 'Facebook Dialogs',
            link: 'https://developers.facebook.com/docs/reference/dialogs/',
            picture: 'http://fbrell.com/f8.jpg',
            caption: 'Reference Documentation',
            description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
        },
        function(response) {
          if (response && response.post_id) {
            alert('Post was published.');
          } else {
            alert('Post was not published.');
          }
        });
      } else {
        alert('User cancelled login or did not fully authorize.');
      }
    }, {scope: 'user_likes,offline_access,publish_stream'});
    return false;
}
</script>
</body>
</html>

【讨论】:

  • 请注意,OAuth2 migration date is Oct 15 和所有应用在此之后都需要使用 OAuth2。要启用它,您需要将oauth: true 添加到FB.init 调用并将perms 更改为scope。
  • @steveax:你是对的。我忘记并抓住了我的一个旧例子。我更新了示例。
  • 很好,可能还希望调用 FB 库协议不可知论:&lt;script src="//connect.facebook.net/en_US/all.js"&gt;&lt;/script&gt; 考虑到即将到来的 SSL 要求。
  • 再一次,您不需要需要offline_access 权限才能在用户离线时发布publish_stream 并且用户ID 就足够了!跨度>
  • 我知道这一点,但他说他在他的问题中需要它。
猜你喜欢
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多