从我在其他帖子中看到的内容来看,此错误是因为方法签名中给出的参数与发布的输入名称不匹配。或者以某种方式甚至没有发送值。
首先这个页面是一个登录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)