在将 Xamarin.Auth 移植到 Windows 8 的过程中,我遇到了以下问题。当尝试使用 OAuth2 向 LinkedIn 进行身份验证并通过为其交换授权代码来请求访问令牌https://developer.linkedin.com/documents/authentication时,Xamarin.Auth 尝试解析结果(一个 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 上移植。
例如,W8 不支持 Expect100Continue,必须删除 HttpWebRequest 并替换为 HttpClient。
例如,LinkedIn 需要设置一个标头才能返回 Json,这些类型的选项需要提供给框架的调用者。
例如,ContentType 解析需要按照相关规范完成。