0

例: Bejeweled Blitz は頻繁にイベントやプロモーションを実施しており、クリックするとアプリ ページに移動します。そこに到達すると、アプリはプロモーション リンクをたどってそのページに到達したことを確認し、報酬をフォークします。

これはどのように行われますか?同様の機能を実装するにはどうすればよいですか? 私の知る限り、ドメインが異なるため (Facebook と私のアプリ)、親 URL は範囲外ですが、メッセージはどのようにアプリに渡されますか?

4

2 に答える 2

1

すべてのアプリ (キャンバス、ページ タブ) Facebook アプリにリンクしている任意の URL にパラメーターを
渡すことで、データを取得できます。app_data次に、このパラメータ値が に追加されますsigned_request

そのため、この URLhttp://facebook.com/mypage/app_123?app_data=promotion12を使用するとpromotion12signed_request.

PHP では、次のようになります。

$signed_request = $facebook->getSignedRequest();
$app_data = $signed_request['app_data'];

もちろん、そこに任意の文字列を渡すことができます。たとえば、JSON 文字列にすることができます。

これは、アプリの外部から内部にデータを取得することの真の核心です。

これがあなたを助けることを願っています!

キャンバス
アプリ ただし、キャンバス アプリでは、すべてのクエリ パラメーターがアプリに渡されるので、はるかに単純です。

したがって、次のhttp://apps.facebook.com/myapp?somedata=hey方法で取得できます。

$data = $_GET['somedata'];

Facebook はこれらのパラメーターを iframe URL に追加するだけです。

ドキュメント
https://developers.facebook.com/docs/reference/login/signed-request/ (見つけるのはかなり困難でした。FB のドキュメントをくそ)

于 2012-12-20T02:50:21.327 に答える
1

これは、ユーザーがクリックする URL で渡されるクエリ パラメータを使用して行われます。明確な例は、ユーザーがクリックできるように URL を共有しているDoubleDownCasinoです。リンクは次のとおりです。

http://apps.facebook.com/doubledowncasino/?pid=PNNTDP&target_url=pid%3APNNTDP

DoubleDownCasino がおそらく行うことは、キャンバス アプリが読み込まれると、URL を解析してクエリパラメータを取得し、 パラメータpidtarget_urlパラメータを使用して、ユーザーが取得する「報酬」のタイプを決定することです。ユーザーが特典を引き換えると、同じ URL をクリックしても報酬を再度取得することはありません。これは、ユーザーが指定された と で特典を既に引き換えたかどうかを確認できるためpidですtarget_url

あなたの質問:

例: Bejeweled Blitz は頻繁にイベントやプロモーションを実施しており、クリックするとアプリ ページに移動します。そこに到達すると、アプリはプロモーション リンクをたどってそのページに到達したことを確認し、報酬をフォークします。

上で説明したことは、まさにこの記事で Bejweled Blitz が行う方法です。bit.ly の短い URL をたどると、URL は次のようになります。

http://apps.facebook.com/bejeweledblitz/?zgift=0/eTtVUuhF5ipdJmO1jlDhr96MtKjp1NYflJrcOddB6iZDH1y96K%2Bml6gC0%2B5yVN

あなたの質問に答えると、Bejeweled Blitz はクエリ パラメータ (この場合は ) を追加することでプロモーションと報酬を実行しzgift、ユーザーがアクセスしている現在の URL を取得することでアプリで解析できます。

于 2012-12-20T02:51:45.353 に答える