【发布时间】:2020-09-03 15:15:03
【问题描述】:
我正在为 Xamarin Forms 编写 C# 代码,并使用 JWTAuth 在 Wordpress 上验证用户名和密码。
但是,我收到了两个似乎没有填充变量的 JSON 响应。
JSON 响应 1:
{"success":false,"statusCode":403,"code":"invalid_username","message":"Unknown username. Check again or try your email address.","data":[]}
JSON 响应 2:
{"success":true,"statusCode":200,"code":"jwt_auth_valid_credential","message":"Credential is valid","data":{"token":"xxxxx","id":xxxx,"email":"xxxxx","nicename":"xxxx","firstName":"xxxx","lastName":"xxxx","displayName":"xxxx"}}
您会注意到第二个响应,如果用户通过验证,它会在数据键值中填充额外的详细信息。
我尝试将这两个响应反序列化为一个类,但如果用户已成功验证,它似乎不会填充变量,这很奇怪。
这是我的代码:
Console.WriteLine("Running Authentication...");
string JWTAPI = "https://xxxx/wp-json/jwt-auth/v1/token";
var client = new HttpClient();
var uri = JWTAPI;
var jsonContent = "{ \"username\": \"" + EntryLoginUsername + "\", \"password\": \"" + EntryLoginPassword + "\"}";
StringContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
var response_status = await client.PostAsync(uri, content);
var response_result = await response_status.Content.ReadAsStringAsync();
JWTJSONResponse = response_result;
Console.WriteLine(JWTJSONResponse);
Root JWTResults = JsonConvert.DeserializeObject<Root>(JWTJSONResponse);
Console.WriteLine("Result: " + JWTResults.success);
if (JWTResults.success.ToString() == "True")
{
ResultTextHeader.Text = "LOGIN SUCCESSFUL!";
Console.WriteLine("Status Code: " + JWTResults.statusCode);
Console.WriteLine("Code: " + JWTResults.code);
Console.WriteLine("Message: " + JWTResults.message);
}
else
{
ResultTextHeader.Text = "Unsuccessful login. Please try again.";
}
还有我的课:
public class Data
{
public string token { get; set; }
public int id { get; set; }
public string email { get; set; }
public string nicename { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string displayName { get; set; }
}
public class Root
{
// JWT
public bool success { get; set; }
public int statusCode { get; set; }
public string code { get; set; }
public string message { get; set; }
public List<object> data { get; set; }
}
【问题讨论】:
标签: c# json xamarin.forms jwt jwt-auth