うまくいけば、これは簡単な解決策になるでしょうが、私はそれを自分で解決することはできないようです。
背景は、Facebookのすべての友達をjQuery UIオートコンプリートに入れ、友達の選択が終了してリンク/ボタンなどをクリックしたときに壁に投稿するWebアプリを作成しようとしています。
私はこれを1人の友人に対しては正常に機能させましたが、複数の友人に対してこれを機能させるために要件が(相変わらず)変更されました。
これまでのところ、ユーザーの友達の壁に実際に投稿する場合を除いて、すべてが複数の友達と連携しています。
コード
私はこれを次のように私が信じる質問に関連するコードに保つように努めます:
IDを入力するための非表示の入力があります。
<input id="fbid" type="hidden" value="12345, 567890, ">
次に、リンクをクリックして友達の壁に投稿したときに実行されるjQuery関数があります。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '12345678', // App ID
channelUrl : '/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.login(function(response)
{
if (response.authResponse)
{
$("#send-voucher").click(function() {
// Post message to friend's wall
var opts = {
message : 'This is the message',
name : 'This is the name',
link : 'http://www.opticalexpress.co.uk',
description : 'This is the description',
picture : '/voucher_valid.png'
};
var referees = $("#fbid").val();
// remove last comma and space from the end of the string
referees = $.trim(referees);
referees = referees.substring(0, referees.length - 1);
var referee = referees.split(', '); // comma space
referee.each(function() {
FB.api('/'+ referee +'/feed', 'post', opts, function(response)
{
if (!response || response.error)
{
alert('Posting error occured');
}
else
{
alert('Success - Post ID: ' + response.id);
$("#send-voucher").hide();
$("#voucher-sent").fadeIn('slow');
}
});
});
});
}
else
{
alert('Not logged in');
}
}, { scope : 'publish_stream' });
};
firebugによって報告されたエラーはreferee.each is not a function
さらに詳しい情報が必要な場合は、お知らせください。