0

Xamarin.Auth を Windows 8 に移植する過程で、次の問題に遭遇しました。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 ベースの Web サイトはこのシナリオで JSON オブジェクトを返しますか? そうでない場合、結果自体でインジケーターを探す以外に、結果の形式の種類をどのように判断しますか?

アップデート:

GetResponseText 拡張機能を編集してコンテンツのタイプ (この場合は application/json) を返し、Json.Net を使用して Json を解析しました。これは、フレームワークの GetValueFromJson 関数がこのシナリオで返された json に対して機能しないためです。

このフレームワークを数日間使用した後、「ベータ」バージョンのようです。Win8、WP8、iOS、および Android で移植できるようにするには、大幅に変更する必要があります。

たとえば、Expect100Continue は W8 ではサポートされていないため、HttpWebRequest を削除して HttpClient に置き換える必要があります。

たとえば、LinkedIn では、Json を返すためにヘッダーを設定する必要があります。これらの種類のオプションは、フレームワークの呼び出し元が利用できるようにする必要があります。

たとえば、ContentType の解析は、関連する仕様に従って完了する必要があります。

4

1 に答える 1

0

ソースが古くなっていると思います.Xamarin.Authは1か月前にJSON認証トークン応答を処理する機能を獲得しました: https://github.com/xamarin/Xamarin.Auth/commit/f21773a52f58b9d82f3adf38acba509fa0e9aecc#L3L311

このライブラリの問題は、問題として報告する方が適切です: https://github.com/xamarin/xamarin.auth/issues

たとえば、Expect100Continue は W8 ではサポートされていないため、HttpWebRequest を削除して HttpClient に置き換える必要があります。

experimental-winphone私が先週プッシュしたブランチには、Windows Phone 8 ライブラリを追加し、コアを HttpClient に置き換えて、他のプラットフォームでの Expect100Continue の無効化を適切にサポートするものがあります。

于 2013-09-05T18:03:03.360 に答える