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 の解析は、関連する仕様に従って完了する必要があります。