как получить идентификатор электронной почты пользователя после входа в AAD, используя платформу бота - PullRequest
0 голосов
/ 03 сентября 2018

Я работаю над ботом, используя бот-фреймворк. С активной аутентификацией каталога мне удалось получить имя пользователя. Теперь я хочу получить номер телефона и войти в систему идентификатор электронной почты пользователя после проверки подлинности с использованием активного каталога?

Ниже приведен код, с которым я работаю.

Аутентификация

 AuthenticationOptions options = new AuthenticationOptions()
                {
                    UseMagicNumber = false,
                    Authority = Convert.ToString(ConfigurationManager.AppSettings["aad:Authority"]),
                    ClientId = Convert.ToString(ConfigurationManager.AppSettings["aad:ClientId"]),
                    ClientSecret = Convert.ToString(ConfigurationManager.AppSettings["aad:ClientSecret"]),
                    ResourceId = Convert.ToString(ConfigurationManager.AppSettings["aad:ResourceId"]),
                    RedirectUrl = Convert.ToString(ConfigurationManager.AppSettings["aad:Callback"])
                };
                await context.Forward(new AuthDialog(new ADALAuthProvider(), options), ResumeAfterLogin, message, context.CancellationToken);

Извлечение данных

 private async Task ResumeAfterLogin(IDialogContext authContext, IAwaitable<AuthResult> authResult)
    {
        string tokenstring = string.Empty;
        string userName = string.Empty;
        var resultToken = await authResult;
        string email = string.Empty;

        try
        {
            tokenstring = resultToken.AccessToken;
            userName = resultToken.UserName;
            MyGlobalVariables.EmailID = "";
            MyGlobalVariables.username = userName;

            if (null != tokenstring && string.Empty != tokenstring)
            {
                authContext.UserData.SetValue<string>("AccessToken", tokenstring);
                authContext.UserData.SetValue<string>("userName", userName);
                await authContext.PostAsync($"*info: you are logged in as {userName}*");
                authContext.Call(new RootDialog(), this.ResumeAfterOptionDialog);
            }
        }
        catch (Exception ex)
        {
            authContext.Wait(MessageReceivedAsync);
            throw ex;
        }
        finally
        {

        }
    }

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете получить номера телефонов и электронные письма зарегистрированных пользователей, используя API-интерфейс Microsoft AAD Graph. Например:

public async Task<User> GetMe()
    {
        var graphClient = GetAuthenticatedClient();
        var me = await graphClient.Me.Request().GetAsync();
        return me;
    }

Полный образец можно найти здесь .

...