他の投稿で見たものから、このエラーは、メソッド署名で指定されたパラメーターが投稿された入力名と一致しなかったためです。または、どういうわけか値が送信されていません。
まず、このページはFacebookにログインするためのテストページです。ユーザーのuidとアクセストークンを取得し、それをサーバーに送信してセッションに保存し、別のページにリダイレクトします。すべての JavaScript は C# FB SDK から取得されたもので、サーバー側はかなり基本的なものです。
私が混乱している本当の問題は、FB で自分のアカウントとしてログインしているが、API によって生成された一時的なテスト ユーザー アカウントの友人ではなく、テスト ユーザーがこのエラーを生成した場合に正しく動作することです。ポップアップは、ユーザーにアプリのアクセス許可を与えるように求めます。フォーム データが送信される直前に調べたところ、サーバー上のパラメーターに対応する名前と値を持つ非表示の入力が含まれていました。
テストユーザーとの投稿を通じて foo 変数を送信しない理由はありますか?
編集: これは、私のアカウントで正しく機能する JavaScript です。テスト ユーザーの uid を送信できません。一部のクエリ文字列パラメーターの名前を変更しましたが、
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
// Do a post to the server to finish the logon
// This is a form post since we don't want to use AJAX
var form = document.createElement("form");
form.setAttribute("method", 'post');
form.setAttribute("action", 'BAR>');
var tField = document.createElement("input");
tField.setAttribute("type", "hidden");
tField.setAttribute("name", 'RAHR');
tField.setAttribute("value", accessToken);
form.appendChild(tField);
var uField = document.createElement("input");
uField.setAttribute("type", "hidden");
uField.setAttribute("name", 'foo');
uField.setAttribute("value", uid);
form.appendChild(uField);
document.body.appendChild(form);
form.submit();
//Server side
public ActionResult BAR(string RAHR, int foo)