0

在将 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 解析需要按照相关规范完成。

4

1 回答 1

0

我相信你已经过时了,Xamarin.Auth 一个月前获得了处理 JSON 身份验证令牌响应的能力:https ://github.com/xamarin/Xamarin.Auth/commit/f21773a52f58b9d82f3adf38acba509fa0e9aecc#L3L311

最好将此库的问题报告为问题:https ://github.com/xamarin/xamarin.auth/issues

例如,W8 不支持 Expect100Continue,必须删除 HttpWebRequest 并替换为 HttpClient。

experimental-winphone上周我推送了一个分支,它添加了一个 Windows Phone 8 库并将核心替换为 HttpClient 以正确支持在其他平台上禁用 Expect100Continue。

于 2013-09-05T18:03:03.360 回答