2

現在、私たちのアプリは Graph API を介してユーザーの友達のウォールに投稿します。ただし、Facebook はこの機能を廃止しているため、Facebook の推奨に従ってフィード ダイアログに移行しています ( 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. ユーザーがボタンをクリックしてフィード ダイアログを起動する
  2. ユーザーがフィード ダイアログ (受信者を含む) に入力して送信する

現在、私たちはこの厄介な流れに行き詰まっています:

  1. ユーザーが受信者を指定するカスタム コントロールに入力する
  2. ユーザーがボタンをクリックしてフィード ダイアログを起動する
  3. ユーザーがフィード ダイアログに入力して送信する
4

1 に答える 1

0

OK、回避策を見つけました。一般的な考え方:

  1. フィードダイアログを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 に答える