我一直在尝试创建一个验证令牌的函数,该函数适用于Android,但不适用于IOS。我的自定义API对IOS的响应返回401未经授权(当您发送无效密钥时,它应该会返回),但是我已经在邮递员中尝试过该密钥并且它是有效的。
也许这与格式化有关?但是我看不出Android和IOS之间会有什么区别。
一些代码:
public async Task<T> PostResponse<T>(string weburl, string jsonstring) where T : class
{
var Token = App.TokenDatabase.GetToken();
string ContentType = "application/json";
var token = string.Format("Token token={0}", Token.access_token);
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
try
{
var result = await client.PostAsync(weburl, new StringContent(jsonstring, Encoding.UTF8, ContentType));
if(result.StatusCode == System.Net.HttpStatusCode.OK)
{
var JsonResult = result.Content.ReadAsStringAsync().Result;
try
{
var ContentResp = JsonConvert.DeserializeObject<T>(JsonResult);
return ContentResp;
}
catch { return null; }
}
}
catch { return null; }
return null;
}
我已经在服务器端创建了一些日志,并且在运行IOS应用程序时,由于某种原因令牌不会传递给服务器。
PHP代码:
$token = null;
$headers = apache_request_headers();
if(isset($headers['Authorization'])){
$matches = array();
preg_match('/Token token=(.*)/', $headers['Authorization'], $matches);
if(isset($matches[1])){
$token = $matches[1];
}
}
file_put_contents('../config/log.txt', $token);
我检查了应用是否发送了令牌。它消失在途中的某个地方。
编辑:经过一些日志记录后,我发现令牌通过IOS发送时位于标头中,而不位于授权标头中,您如何解决此问题?
我通过下载Flurl和Flurl.Http插件解决了这一问题,并添加了以下代码行:
var result = await url.WithOAuthBearerToken(token).PostJsonAsync(jsonstring);
也
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句