Node JS と Express を使用して開発した Facebook Pagetab アプリケーションがあります。ほとんどの場合、完全に機能しているように見えますが、そうでない場合もあります。問題を再現する際に問題が発生しているため、デバッグが難しくなっていますが、問題は特定できたと思います。
ホームページが読み込まれると、Thuzi の Facebook モジュール ( https://github.com/Thuzi/facebook-node-sdk ) を使用して、Facebook から渡された署名済みのリクエストを選別し、ユーザーがそのページを気に入っているかどうかを判断します。
var fb = require('fb');
var signedRequest = fb.parseSignedRequest(req.body.signed_request, process.env.FACEBOOK_APP_SECRET);
if(signedRequest ){
if( signedRequest.page.liked){
res.redirect('/authorise');
}
else {
res.redirect('/gate');
}
}
else {
console.log('No signed request');
}
ただし、「署名されたリクエストなし」がコンソールに送信されることがあるため、基本的に Facebook は署名されたリクエストを渡さないことがあります。したがって、ユーザーには空白の画面が表示されます。コードを使用してホームページにリダイレクトすると、無限ループに陥ります。それに応じてユーザーをリダイレクトするには、署名付きのリクエストが必要です。Facebook が署名済みのリクエストを送信しない場合がある理由はありますか?
req.body.signed_request の内容を確認すると空っぽの場合もあるので、fb モジュールが正常に動作していないわけではありません。