2017-09-20 5 views
0

私はAzureモバイルバックエンドをfacebookとgoogle認証用の簡単な認証で設定しており、期待どおりに動作します。Azure AppサービスEasy Auth

サポートされているプロバイダのいずれかにサインインするたびに、クライアントからの追加のコールをせずに、新しいユーザかどうかを確認できます(データベースにない電子メール)。これは可能ですか?

答えて

1

ユーザがサポートされているプロバイダのいずれかにサインインするたびに、クライアントからの追加のコールをせずに、新しいユーザかどうかを確認できます(データベースにない電子メール)。これは可能ですか?

私が知る限り、新しいユーザーかどうかは直接確認できませんでした。

サーバーフローまたはクライアントフローを使用しても、簡単な認証では、クライアントがモバイルバックエンドリソースにアクセスするためのアクセストークンが返されます。ユーザーは新しいユーザーか古いユーザーかはチェックされません。

この要件を達成するには、独自のロジックを作成する必要があります。

ユーザーログイン後にコードを書くことができます。

たとえば、Facebookのログイン。

ログインが正常に行われている場合は、GetAppServiceIdentityAsync拡張メソッドを呼び出してFacebookのグラフAPIに対して要求を行うために必要なアクセストークンを含むログイン資格情報を取得できます。

// Get the credentials for the logged-in user. 
var credentials = 
    await this.User 
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request); 

if (credentials.Provider == "Facebook") 
{ 
    // Create a query string with the Facebook access token. 
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token=" 
     + credentials.AccessToken; 

    // Create an HttpClient request. 
    var client = new System.Net.Http.HttpClient(); 

    // Request the current user info from Facebook. 
    var resp = await client.GetAsync(fbRequestUrl); 
    resp.EnsureSuccessStatusCode(); 

    // Do something here with the Facebook user information. 
    var fbInfo = await resp.Content.ReadAsStringAsync(); 
} 

次に、ユーザー情報に基づいてデータベースを確認できます。

サーバー側でユーザー情報を取得する方法の詳細は、How to: Retrieve authenticated user informationを参照してください。

+0

助けてくれてありがとう。私はあなたの指示に従って私の目標を達成しようとし、成功したらここに投稿します。 – LuizFranco

関連する問題