FacebookでiFrameアプリを作成していますが、これは基本的にメーリングリストのサインアップページです。ただし、ユーザーが [サインアップ] をクリックすると、FB:ui の "Post To Your Wall" がポップアップし、必要に応じてサインアップしたばかりのものを共有するオプションがユーザーに提供されます。それは正常に動作します。
ただし、Facebook にログインしているユーザーにのみ FB:ui を表示する方法を見つけたいと考えています。私のアプリは、必要に応じて共有するオプションをユーザーに提供する単なるランディング ページであるため、ユーザーからの許可を必要としません。自動共有が行われることはありません。
現在、以下のコードを使用しています。
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js">
</script>
<script>
FB.init({
appId:'my app id', cookie:true,
status:true, xfbml:true
});
FB.getLoginStatus(function(response) {
if(response.session) {
sharethisnow();
} else {
// no user session available, someone you dont know
if(response.status == "notConnected") {
// But user is logged into facebook
sharethisnow();
} else {
// User is not logged into facebook
}
}
});
function sharethisnow() {
FB.ui({ method: 'feed',
link: 'my link',
name: 'my page name',
caption: 'my caption',
description: 'my decription',
picture: 'my picture',
message: 'my message'});
}
</script>
ご覧のとおり、FB:ui (sharethisnow 関数) を、Facebook と私のアプリにログインしているユーザー、または Facebook のみにログインしているユーザーに対してのみ実行しようとしています。しかし、何らかの理由で、上記のコードはページ管理者に対してのみ機能します。管理者としてログインしてサインアップすると、FB:ui が表示されます。ただし、管理者以外 (Facebook にログインしている一般的なユーザー) としてページを表示すると、FB:ui がポップアップしますが、エラーが発生し、「後でもう一度やり直してください」と表示されます。
これに関するヘルプは素晴らしいでしょう。