0

リクエストダイアログを使用すると、Facebookは次のような通知を発行します。

ここに画像の説明を入力してください

私が達成しようとしているのは、ユーザーが上記のリクエストリンクをクリックして、アプリに「ランダムユーザーがあなたを招待しました...」というメッセージを表示することです。

ただし、そのリンクをクリックすると、Facebookは「ランダムユーザー」のIDをアプリに渡さないようです。リンクによってアクセスされるURLは次のようになります。

http://apps.facebook.com/randomcomp/?fb_source=notification&request_ids=350578327437399,350578327437399&ref=notif&app_request_type=user_to_user&notif_t=app_request

これには、リクエストを開始したユーザーへの参照は含まれていません。

アプリ側から見ると、Facebookからこの情報を取得する方法はないようです。もちろん、リクエストのリストを取得することはできますが、そのリストには、関心のあるものに加えて他のユーザーからのリクエストを含む多くのリクエストの情報が含まれている可能性があるため、この場合は役に立ちません。たとえば、データのスナップショットは次のとおりです。

{
    "data": [
    {
        "id": "340083146057323_100003817986566",
        "application": {
            "name": "Random Competition",
            "namespace": "randomcomp",
            "id": "350578327437399"
        },
        "to": {
            "name": "Hannah Smith",
            "id": "100003817986566"
        },
        "from": {
            "name": "Random User",
            "id": "100002286042525"
        },
        "data": "100002286042525",
        "message": "Use the app!",
        "created_time": "2012-05-14T13:26:30+0000"
    }, {
        "id": "358318457550141_100003817986566",
        "application": {
            "name": "Random Competition",
            "namespace": "randomcomp",
            "id": "350578327437399"
        },
        "to": {
            "name": "Hannah Smith",
            "id": "100003817986566"
        },
        "from": {
            "name": "Jane Young",
            "id": "100003771838663"
        },
        "data": "100002286042525",
        "message": "Use the app!",
        "created_time": "2012-05-14T10:54:25+0000"
    }],
    }
}

ご覧のとおり、dataは渡されていますが、上記のリンク(ランダムユーザーの場合)からのクリックをリスト内の正しいリクエストに参加させる方法はまだありません。リンクは、ランダムユーザーのIDだけでなく、両方のリクエストのIDを通過します。リンクには「ランダムユーザー」と記載されていますが、識別子は通過しません。

私は何かが足りないのですか?ドキュメントにないメカニズムで「ランダムユーザー」IDを取得できるので、クリックしたときにアプリで「ランダムユーザーがあなたを招待しました...」というメッセージを表示できますか?

編集:

これは不可能であることが判明しました-私の答えを参照してください。

4

2 に答える 2

1

リクエストにデータを追加して、リクエストを処理するときに他のリクエストと区別できるようにすることができます。

データはアプリリクエストとユーザーリクエストで送信でき、パラメータ名は「data」です。たとえば、[リクエスト]ダイアログのガイドでは、ドキュメントの(ほぼ)最後にあるプロパティテーブルで次のように表示されます。

オプションで、追跡のために渡すことができる追加データ。これは、作成されたリクエストオブジェクトの一部として保存されます。最大長は255文字です

ソーシャルチャネルのドキュメントにもそれに関する情報があり、リクエスト2.0へのアップグレードに関する公式ブログ投稿には(php)の使用例があります。

これがあなたが探しているものであることを願っています。


編集

あなたがリクエストを送るとき、あなたはそれを誰が正しく送っているのか知っていますか?これはログインしているユーザーなので、リクエストのデータパラメータにユーザーID / name/etcを含めることができます。次に、誰かがリクエストをクリックすると、Facebookから渡されたIDでリクエストを取得し、データから送信者のユーザーIDを抽出します。

ドキュメントに記載されているように、255文字を使用できます。これにより、オブジェクトをそのパラメーターにシリアル化し、後で逆シリアル化することもできます。

于 2012-05-14T13:39:47.990 に答える
0

結局のところ、これは実際にはまったく不可能です。

次の画像に示すように、リンクは複数のユーザーを表示できます。

ここに画像の説明を入力してください

これが、複数のリクエストIDが渡され、送信者のIDが渡されない理由です。

于 2012-05-14T15:04:10.100 に答える