1

環境

Azure Api アプリを "パブリック (認証済み)" に設定しており、Facebook ID を有効にしています。私の Api アプリは保護されており、FB で認証できます。Api アプリで、ログイン プロバイダー、トークン、メールなどの認証されたユーザー情報を取得して、データベースに保存したいと考えています。

問題

この情報を取得する方法に関するドキュメントが見つかりません。私はこの記事に従って試しました

    var runtime = Runtime.FromAppSettings(Request);
    var user = runtime.CurrentUser;
    TokenResult token = user.GetRawTokenAsync("facebook").Result;
    var name = (string)token.Claims["name"];
    var email = (string)token.Claims["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"];

Facebook 認証を許可するように apiapp.json ファイルを変更しましたが、Api アプリのリモート デバッグ時に"authentication": [{"type": "facebook"}]タイムアウトします。GetRawTokenAsync

他のブログ/記事/投稿を見て、追加のアセンブリ「Microsoft.WindowsAzure.Mobile」を参照する別の方法を次に示します。

    var user = (MobileAppUser)this.User;
    var facebookCredentials = user.GetIdentityAsync<FacebookCredentials>().Result;

ただし、これは、Api アプリをリモートでデバッグするときに、ユーザーthis.userタイプとしては機能しません。WindowsPrincipalどうやら "Microsoft.Azure.AppService.ApiApps.Service" は、Azure Api アプリが必要とする唯一の参照です。

何か不足していますか?Api App Web サービスで認証されたユーザーを取得するための基本的なシナリオのようです。

4

1 に答える 1