2

現在の.NETおよびFBMLベースのFacebookアプリには、次のようなコードがあります。

<fb:request-form
        action="http://mysite.com/InvitesSent.aspx"
        method="POST"
        invite="true"
        type="SomeType"
        content="Here is an invite to <fb:req-choice url='http://mysite.com?<%=Params %>' label='My site' />">
    <fb:multi-friend-selector
            max="20"
            actiontext="Invite your friends!"
            showborder="false"
            rows="4"
            bypass="cancel"
            email_invite="false"
            exclude_ids="" /> 
</fb:request-form>

これにより、ユーザーがいくつかの友達を選択し、「招待状の送信」を押すと、ユーザーがhttp://mysite.com/InvitesSent.aspxにリダイレクトされる私のサイトのマルチフレンドセレクターがポップアップします。

もう一方の端では、招待の受信者に[同意する]ボタンが付いた通知が表示されます。ボタンが押されると、Facebookはすぐに私のサイトにリダイレクトします

http://www.facebook.com/l.php?u=http%3A%2F%2Fmysite.com%3F ...

これはFacebookの外部リンクリダイレクトです。このリダイレクトには、fb:req-choiceurl属性で指定したパラメーターが含まれています。

私の質問はこれです:FBMLは廃止される予定なので、Javascript SDKでこの動作を実現するにはどうすればよいですか?

FB.uiとapprequestを使用して通知を送信できますが、FBMLの場合のように、URLにパラメーターを追加できないようです。招待者に報酬を与えたいので、これが必要です。そのためには、個々のリクエストを追跡できる必要があります。

新しいSDKでもこれは可能ですか?ドキュメントは紛らわしく、リクエストと招待を区別する場合とそうでない場合があります。正直なところ、違いがあるかどうかはわかりません。解決策を見つけるのに役立つ可能性のある「invite="true」」などのFBMLの手がかりに固執しているだけです。

4

1 に答える 1

3

これはもう不可能です。これは、開発者向けドキュメントの次の段落から明らかです。

ユーザーの処置

ユーザーがリクエストで[同意する]をクリックすると、リクエストを送信したアプリケーションのキャンバスURLに送信されます。このURLには、追加のパラメーターrequest_idsが含まれます。これは、ユーザーが操作しようとしている要求IDのコンマ区切りのリストです。

http://apps.facebook.com/ [app_name] /?request_ids = [request_ids]ユーザーがアプリにアクセスしたときのベストプラクティスとして、未処理のアプリリクエストを読む必要があります。ユーザーがダッシュボードから通知またはリクエストをクリックすると、URLを介してリクエストIDが渡されます。次に、ユーザーがリクエストを処理するときに、GraphAPIを介してリクエストを削除する必要があります。

ユーザーがFacebookのAPIで[同意する]をクリックしても、リクエスト2.0のリクエストは削除されません。Graph APIを使用して、それらを読み取ってクリアする必要があります。

だからあなたが試すことができるのはこれです:

  1. ユーザーが友達に招待/リクエストを送信するときは、javascriptコールバックでrequest_idsを読み取り、ajaxを使用してデータベースに保存します(呼び出し可能InvitesSent.aspx)。

  2. 新しいユーザーが来たら、request_idを読み、リクエストを送信したユーザーに報酬を与えます。

ユーザーが外部のWebサイトからリクエストを送信し、別のユーザーが新しいJS SDKを使用して受け入れるとどうなるかを教えていただければ、ソリューションをより具体的にすることができます。基本的に、ブラウザのURLを監視していると、Facebookが受け入れた新しいユーザーをどのようにリダイレクトしているかがわかります。ドキュメントでは、受け入れはキャンバスアプリについてのみ言及されているため、外部サイトで何が起こるかわかりません。あなたがそれをテストすれば、私たちはそれを理解することができます。
編集:
Igyが提案したように、リクエストを受け入れると常にキャンバスにリダイレクトされると思います。

于 2011-10-27T10:38:49.823 に答える