2

目前,我们的应用通过 Graph API 发布到用户朋友的墙。但是,Facebook 正在弃用此功能,因此我们将根据 Facebook 的建议迁移到 Feed Dialog(请参阅https://developers.facebook.com/roadmap/上的 2013 年 2 月 6 日部分)。

现在,我们知道我们可以将接收者指定为 Javascript SDK 调用的一部分(注意 FB.init() 在页面前面的其他地方被调用):

<p><a onclick="launchFeedDialog(); return false">Testing the Feed Dialog</a></p>
<script>
function launchFeedDialog() {

    // calling the API ...
    var obj = {
      method: 'feed',
      to: 'RECIPIENT NAME', // Can specify recipient here
      link: 'http://example.com',
      name: 'Test post',
      description: 'Test description'
    };

    FB.ui(obj);
}
</script>

但是,用户似乎无法在启动的对话框中修改收件人。我的意思的屏幕截图位于http://i.imgur.com/oLPTO.png

是否有某种方法可以调用提要对话框,以便用户可以更改/添加收件人,例如在发送对话框中?

我们试图实现的流程(以及目前的方式)是:

  1. 用户单击按钮以启动 Feed 对话框
  2. 用户填写 Feed 对话框(包括收件人)并提交

现在,我们被这个尴尬的流程困住了:

  1. 用户填写指定收件人的自定义控件
  2. 用户单击按钮以启动 Feed 对话框
  3. 用户填写 Feed 对话框并提交
4

1 回答 1

0

好的,我们找到了解决方法。总体思路:

  1. 将 Feed Dialog 内嵌显示为 iframe(通过指定display=iframe
  2. 创建您自己的自定义控件以选择收件人 Facebook 用户名或 ID
  3. 在选择收件人或 onblur 等时异步重新加载 iframe

上面的一些警告/理由:

  • 您不能使用 JS SDK,因为它会将提要对话框的 iframe 版本作为模态灯箱启动(而不是页面流中的内联)
  • 您需要实现一个重定向页面来进行后处理,例如更新父窗口的状态、记录结果等
  • 对于 (2),自定义控件可以像文本输入字段一样简单,但您可能至少需要某种自动完成功能。这实际上并不太棘手,因为您使用https://graph.facebook.com/me/friends Graph API 调用获取用户的朋友列表。

这是一个使用简单文本输入的基本示例:

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<div>
  Recipient's FB username:
  <input type="text" id="fb-recipient" placeholder="Recipient's FB username"></input>
  <input type="submit" id="fb-recipient-submit" value="Pick" />
</div>
  <iframe id="fb-feed-dialog" width="586" height="330" frameborder="0" allowfullscreen></iframe>
<script>
  $('#fb-recipient-submit').click(function(e){
    e.preventDefault();
    var feedUrl = 'https://www.facebook.com/dialog/feed?';
    feedUrl += 'display=iframe';
    feedUrl += '&app_id=' + 'YOUR_APP_ID';
    feedUrl += '&access_token=' + 'ACCESS_TOKEN';
    feedUrl += '&link=' + 'SHARE_LINK';
    feedUrl += '&redirect_uri=' + 'REDIRECT_URI';
    feedUrl += '&to=' + $('#fb-recipient').val();
    $('#fb-feed-dialog').attr( 'src', feedUrl );
  });
</script>
</body>
</html>

您可以在以下位置找到稍微充实的解决方案的屏幕截图:http: //i.imgur.com/0jTM391.png

于 2013-01-26T01:27:07.813 回答