2016-12-13 13 views
1

こんにちは私はAzure AD B2Cを使用してXamarinアプリで名前と住所などのユーザー情報を取得しようとしています。私は、ユーザーの名前や誕生日を取得する方法を知りたいのですがAzure AD B2Cユーザー情報Xamarin

は、これまでのところ私は細かい

public async Task<MobileServiceUser> LoginAsync(MobileServiceClient client, MobileServiceAuthenticationProvider provider) 
{ 
    try 
    { 
    //login and save user status 
    var user = await client.LoginAsync(Forms.Context, provider); 

    Settings.AuthToken = user?.MobileServiceAuthenticationToken ?? string.Empty; 
    Settings.UserId = user?.UserId ?? string.Empty; 
    return user; 
    } 
    catch (Exception e) 
    { 
    } 

    return null; 
} 

作業の認証を得ています。私はそれのための行動の明確なコースを見つけることができませんでした。

答えて

3

MobileService SDKを使用して明示的にこの情報を取得するわけではありません。 App Service Authentication/Authorization hereに関する完全なドキュメントを確認してください。

あなたはそれが言及地点に到達します:あなたのアプリケーションはまた、アプリケーションの/.auth/meエンドポイント上の HTTP GETを通じて追加のユーザーの詳細情報を取得することができ

を。リクエストに含まれている有効なトークン は、使用されているプロバイダの詳細、 のJSONペイロード、基になるプロバイダ トークン、およびその他のユーザー情報を返します。 Mobile AppsサーバーSDK は、このデータを処理するヘルパーメソッドを提供します。ユーザーが正常に認証された後

だから、あなたのXamarinに、明示的/.auth/meにHTTP GETリクエストを作成し、ログインしているユーザーに関するすべての情報を取得するには、結果を解析する必要があります。

ないXamarinでこれを行う方法がわからが、ここではC#UWP(ユニバーサルWindowsのプラットフォーム)でそれを行う方法です:このコード実行の時

   var url = App.MobileService.MobileAppUri + "/.auth/me"; 
       var clent = new Windows.Web.Http.HttpClient(); 
       clent.DefaultRequestHeaders.Add("X-ZUMO-AUTH", this.user.MobileServiceAuthenticationToken); 
       var userData = await clent.GetAsync(new Uri(url)); 

、のuserdata varibaleはJSONになりますすべてのユーザーの申し立てを拒否しています。

+0

これは機能します。ありがとうございます。私はここ数日で私の脳を破壊してきました。現在、相反する情報がたくさんあります。モバイル・サービスがモバイル・アプリケーションになったとは言いませんが、彼らは共通点が多いようです。感謝万円! – xerotolerant

+0

データを使用できるようにするために、私は応答を投げかけられるオブジェクトがあるかどうか知っていますか? – xerotolerant

+0

申し訳ありませんが、私はすでにあなたが逆シリアル化に使用できるオブジェクトがあるかどうかはわかりません。ちょうどヒント - あなたが得るものは純粋なJSON STRINGです。あなたはJSON文字列を 'キャストできません。あなたはそれをdeserialiseできます。しかし、まだ、あなたはどのようなオブジェクトを使用すべきか分かりません。構造とダイナミックをチェックするか、オブジェクトをデザインします。 [ClaimsPrincipal Class](https://msdn.microsoft.com/en-us/library/system.security.claims.claimsprincipal(v = vs.110).aspx)に近いはずです – astaykov