2011-09-13 38 views
3

我一直在谷歌搜索2天,并找不到任何明确的。我遇到的所有结果都使用不再适用的不推荐使用的代码。请帮忙。Facebook JS SDK - 在权限检查后发布到墙上

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

  1. 检查延长权限
  2. 如果权限尚未授予,要求他们(user_likes,offline_access,publish_stream)
  3. 获得权限后,发布后用户的墙壁
  4. 允许我推墙的帖子给用户,而他们是离线

有人可以协助吗?

+0

感谢OffBySome这个例子。看着它,我可以看到我非常接近解决方案,但错过了包含response.authResponse的FB.login。我今晚将实施这个计划,并报告我的发现。 – Steve

+0

关于offline_access,任何人都可以确认此权限不需要为了发布而无需用户交互?我知道这是一个灰色区域,但用户知道这会发生,并且必须特别选择允许它。但是,我的理解是,发布到离线用户的墙的能力需要这样做,因为自动发布:true被禁用。使用用户ID,我只需要包含auth令牌**而不需要**需要offline_access? – Steve

+0

昨天晚上我实现了由OffBySome发布的示例,并且它运行得非常漂亮。谢谢:) – Steve

回答

9

这很简单。您可以调用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> 
+0

请注意[OAuth2迁移日期为10月15日](http://developers.facebook.com/blog/post/555/),之后所有应用都需要使用OAuth2。为了启用这个功能,你需要在'FB.init'调用中添加'oauth:true'并将'perms'改为'scope'。 – steveax

+0

@ steveax:你是对的。我忘了,抓住了我的一个老例子。我更新了这个例子。 – bkaid

+0

好的交易,也可能想要调用FB库协议不可知的:''鉴于即将到来的SSL要求。 – steveax

相关问题