0

他の投稿で見たものから、このエラーは、メソッド署名で指定されたパラメーターが投稿された入力名と一致しなかったためです。または、どういうわけか値が送信されていません。

まず、このページは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)
4

2 に答える 2

0

入ってくる値が大きすぎることがわかりました。intパラメータをオーバーフローさせ、奇妙な値を与える代わりに、MVCはそれを無効にしたと思います。

于 2013-01-18T20:57:10.807 に答える