我正在尝试用Mozilla Persona登录做一个示例应用程序,但在示例代码中遇到了一个错误。
代码
public class AuthController : Controller
{
[HttpPost]
public ActionResult Login(string assertion)
{
if (assertion == null)
{
// The 'assertion' key of the API wasn't POSTED. Redirect,
// or whatever you'd like, to try again.
return RedirectToAction("Index", "Home");
}
using (var web = new WebClient())
{
// Build the data we're going to POST.
var data = new NameValueCollection();
data["assertion"] = assertion;
data["audience"] = "https://example.com:443"; // Use your website's URL here.
// POST the data to the Persona provider (in this case Mozilla)
var response = web.UploadValues("https://verifier.login.persona.org/verify", "POST", data);
var buffer = Encoding.Convert(Encoding.GetEncoding("iso-8859-1"), Encoding.UTF8, response);
// Convert the response to JSON.
var tempString = Encoding.UTF8.GetString(buffer, 0, response.Length);
var reader = new JsonReader();
dynamic output = reader.Read(tempString);
if (output.status == "okay")
{
string email = output.email; // Since this is dynamic, convert it to string.
FormsAuthentication.SetAuthCookie(email, true);
return RedirectToAction("Index", "Home");
}
// Could not log in, do something else.
return RedirectToAction("Index", "Home");
}
}
}
错误
我在下面的行中得到了一个错误,通知构造函数不能接受0个参数。好的,这很清楚。但这段代码是我从Mozilla Persona获得的。
var reader = new JsonReader();
更新
我在下面的代码中也出现了同样的错误
var reader = new JsonFx.Json.JsonReader();
有人能帮我吗?
我在stackoverflow中发现了一些问题,比如这个问题,你可以看到同一段代码。
您需要升级到JsonFX的最新版本,您可以在这里获得:https://github.com/jsonfx/jsonfx.
在这个更新的版本中,JsonReader
实际上包含了一个默认的构造函数,它应该使您的代码能够工作。
在您可能拥有的版本中(我在这里找到了旧版本),JsonReader
有许多构造函数,但它们都不接受零参数。