JavaScript API を使用した Facebook ページのアフィニティの決定
iFrame アプリケーションのコンテキストでは、ユーザーがページに「いいね!」したかどうかを確認するタスク特定の Facebook ページに遭遇する可能性があります。ただし、この機能を実装しようとしているときに矛盾が発生することは珍しいことではありません。
次のコード スニペットを考えてみましょう:
FB.api({ method: "pages.isFan", page_id: my_page_id, }, function(response) { console.log(response); if(response){ alert('You Likey'); } else { alert('You not Likey :('); } } );
このコードを実行すると、たとえ「False」という不可解な結果が得られます。ただし、問題のユーザーは実際に関連ページを「いいね」しました。この矛盾の背後にある原因は、対処されていない拡張許可の必要性にあります。
署名付きリクエストを使用した代替アプローチ
この問題を回避し、確実にユーザーの「いいね」ステータスに応じて、署名付きリクエスト メカニズムを利用した代替アプローチを使用することもできます。 Facebook 内で「OAuth 2.0 for Canvas」詳細オプションを有効にすると、すべてのタブ アプリ リクエストで、ユーザーの「いいね」ステータスなどの重要な情報を含む署名付きリクエストを取得できます。
function parsePageSignedRequest() { if (isset($_REQUEST['signed_request'])) { $encoded_sig = null; $payload = null; list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2); $sig = base64_decode(strtr($encoded_sig, '-_', '+/')); $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true)); return $data; } return false; } if($signed_request = parsePageSignedRequest()) { if($signed_request->page->liked) { echo "This content is for Fans only!"; } else { echo "Please click on the Like button to view this tab!"; } }
これこのソリューションは、署名されたリクエストを抽出してデコードし、解析された JSON オブジェクトの「いいね!」プロパティを調べて、Facebook ページに対するユーザーの「いいね!」ステータスを正確に判断します。
以上がJavaScript を使用して Facebook ユーザーが私のページを気に入ったかどうかを確実に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。