如何将Facebook的发送对话框限制为只有一个收件人?

时间:2013-04-19 11:54:38

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

  

你好专家,

我创建了一个fb应用程序,用于向用户的朋友的收件箱发送私人消息。我们希望用户能够通过我们的网站向他们的朋友发送消息,但一次只能向一位收件人发送消息(他们将从网站上的列表,我们将在其上预先填充消息)。

但是当用户侧出现对话框时,用户可以编辑并添加多个recip.i需要限制用户在对话框中添加和编辑。有没有办法做到这一点,请给我一个建议。< / p>

这是ss http://screencast.com/t/wvbPe06zAi

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

使用send对话框,您将无法限制收件人用户。

仅强制执行一个用户限制的唯一方法是将消息发布到其Feed。您一次只能发布到一个用户的Feed。然而,这不是私密的,只是张贴在他们的个人资料上。

为此,您需要在启动to对话框时指定FB.ui()参数。这是一个简单的例子:

var obj = {
  method: 'feed',
  link: 'https://your.cool.site.com',
  picture: 'http://your.cool.site.com/foo.jpg',
  name: 'My Cool Site',
  to: USER_FBID
};
FB.ui(obj);

答案 1 :(得分:0)

我在下面的示例中使用了此页面Mutli Friend Selector中的代码,但我将复选框输入替换为无线电输入以限制选择给一位朋友。

您可以构建一个简单的UI(Java脚本),以允许用户使用像这样的单选按钮选择他的一个朋友:

function renderMFS() {
FB.api('/me/friends', function(response) {
var container = document.getElementById('mfs');
var mfsForm = document.createElement('form');
mfsForm.id = 'mfsForm';

for(var i = 0; i < Math.min(response.data.length, 10); i++) {
 var friendItem = document.createElement('div');
 friendItem.id = 'friend_' + response.data[i].id;
 friendItem.innerHTML = '<input type="radio" name="friends" value="'
   + response.data[i].id
   + '" />' + response.data[i].name;
   mfsForm.appendChild(friendItem);
 }
 container.appendChild(mfsForm);

 // Create a button to send the Request(s)
 var sendButton = document.createElement('input');
 sendButton.type = 'button';
 sendButton.value = 'Send Request';
 sendButton.onclick = sendRequest;
 mfsForm.appendChild(sendButton);
});
}

选择朋友后,用户将点击上面脚本生成的“发送”按钮。点击“发送”按钮后,将执行以下功能。

function sendRequest() {
// Get the list of selected friends
var sendUIDs = '';
var mfsForm = document.getElementById('mfsForm');
 for(var i = 0; i < mfsForm.friends.length; i++) {
   if(mfsForm.friends[i].checked) {
     sendUIDs += mfsForm.friends[i].value + ',';
   }
 }


FB.ui({method: 'send',
 to: sendUIDs,
 name: 'My Great Invite',
 message: 'Check out this!!!',
}, callback);
}

function callback(response) {
console.log(response);
}