在将Xamarin.Auth移植到Windows 8的过程中,我遇到了以下问题。当尝试通过交换授权代码https://developer.linkedin.com/documents/authentication使用OAuth2和请求访问令牌向LinkedIn进行身份验证时,Xamarin.Auth尝试解析结果(A JSON对象),就好像它是一个url格式化的字符串。在RequestAccessTokenAsync(OAuth2Authenticator.cs)中,有以下代码
var text = task1.Result.GetResponseText(); [JSON object]
var data = WebEx.FormDecode(text);
我错过了什么吗?这是Xamarin.Auth代码中的错误吗?在这种情况下,所有基于OAuth2的网站是否都会返回JSON对象,如果不是,那么除了尝试在结果本身中查找指标外,如何确定结果的格式类型呢?
我编辑了GetResponseText扩展名以返回内容类型,在本例中为application / json,并使用Json.Net来解析Json,因为框架中的GetValueFromJson函数不适用于此场景中返回的json。
使用这个框架几天之后,它似乎是一个“Beta”版本,我将不得不对它进行广泛修改,以便它可以在Win8,WP8,iOS和Android上移植。
e.g。在W8中不支持Expect100Continue,必须删除HttpWebRequest并替换为HttpClient。
e.g。 LinkedIn需要设置标头才能返回Json,这些选项需要提供给框架的调用者。
e.g。 ContentType解析需要按照相关规范完成。
答案 0 :(得分:0)
我相信你已经过时了,Xamarin.Auth获得了一个月前处理JSON身份验证令牌响应的能力:https://github.com/xamarin/Xamarin.Auth/commit/f21773a52f58b9d82f3adf38acba509fa0e9aecc#L3L311
此库的问题更好地报告为问题:https://github.com/xamarin/xamarin.auth/issues
e.g。在W8中不支持Expect100Continue,必须删除HttpWebRequest并替换为HttpClient。
我上周推出了一个experimental-winphone
分支,它添加了一个Windows Phone 8库,并用HttpClient替换了核心,以便在其他平台上正确支持禁用Expect100Continue。