例: Bejeweled Blitz は頻繁にイベントやプロモーションを実施しており、クリックするとアプリ ページに移動します。そこに到達すると、アプリはプロモーション リンクをたどってそのページに到達したことを確認し、報酬をフォークします。
これはどのように行われますか?同様の機能を実装するにはどうすればよいですか? 私の知る限り、ドメインが異なるため (Facebook と私のアプリ)、親 URL は範囲外ですが、メッセージはどのようにアプリに渡されますか?
例: Bejeweled Blitz は頻繁にイベントやプロモーションを実施しており、クリックするとアプリ ページに移動します。そこに到達すると、アプリはプロモーション リンクをたどってそのページに到達したことを確認し、報酬をフォークします。
これはどのように行われますか?同様の機能を実装するにはどうすればよいですか? 私の知る限り、ドメインが異なるため (Facebook と私のアプリ)、親 URL は範囲外ですが、メッセージはどのようにアプリに渡されますか?
すべてのアプリ (キャンバス、ページ タブ) Facebook アプリにリンクしている任意の URL にパラメーターを
渡すことで、データを取得できます。app_data
次に、このパラメータ値が に追加されますsigned_request
。
そのため、この URLhttp://facebook.com/mypage/app_123?app_data=promotion12
を使用するとpromotion12
、signed_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 のドキュメントをくそ)
これは、ユーザーがクリックする URL で渡されるクエリ パラメータを使用して行われます。明確な例は、ユーザーがクリックできるように URL を共有しているDoubleDownCasinoです。リンクは次のとおりです。
http://apps.facebook.com/doubledowncasino/?pid=PNNTDP&target_url=pid%3APNNTDP
DoubleDownCasino がおそらく行うことは、キャンバス アプリが読み込まれると、URL を解析してクエリパラメータを取得し、 パラメータpid
とtarget_url
パラメータを使用して、ユーザーが取得する「報酬」のタイプを決定することです。ユーザーが特典を引き換えると、同じ URL をクリックしても報酬を再度取得することはありません。これは、ユーザーが指定された と で特典を既に引き換えたかどうかを確認できるためpid
ですtarget_url
。
あなたの質問:
例: Bejeweled Blitz は頻繁にイベントやプロモーションを実施しており、クリックするとアプリ ページに移動します。そこに到達すると、アプリはプロモーション リンクをたどってそのページに到達したことを確認し、報酬をフォークします。
上で説明したことは、まさにこの記事で Bejweled Blitz が行う方法です。bit.ly の短い URL をたどると、URL は次のようになります。
あなたの質問に答えると、Bejeweled Blitz はクエリ パラメータ (この場合は ) を追加することでプロモーションと報酬を実行しzgift
、ユーザーがアクセスしている現在の URL を取得することでアプリで解析できます。