【问题标题】:Xamarin.Auth not able to parse JSON LinkedIn OAuth2 Request for Access Token by exchanging the Authorization CodeXamarin.Auth 无法通过交换授权代码来解析 JSON LinkedIn OAuth2 访问令牌请求
【发布时间】:2013-09-06 02:03:03
【问题描述】:

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

【问题讨论】:

    标签: xamarin.auth


    【解决方案1】:

    我相信你已经过时了,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。

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 2015-03-30
      • 2018-02-03
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 2017-09-28
      • 1970-01-01
      相关资源
      最近更新 更多