如何获取当前用户的电子邮件地址?

时间:2019-05-10 16:47:00

标签: c# api xamarin.forms xamarin.android

我的问题是有关Xamarin表单应用程序的。 要登录我的用户,我遵循了以下教程:

https://app.pluralsight.com/player?course=building-cross-platform-mobile-apps-csharp-xamarin-azure-update&author=matt-milner&name=059dcc38-df00-47ed-9e40-a943cf3b97ce&clip=4&mode=live

为了稍后在我的应用程序中使用用户身份,我需要在连接后获取我的用户电子邮件地址。

我实际使用的方法返回了401错误。 有人知道如何解决我的问题吗?

用于连接用户的登录方法(在android应用中):

    public async Task LoginUser(MobileServiceClient m)
    {
        var context = Android.App.Application.Context;
        var store = AccountStore.Create(context, "pass");
        var user = await m.LoginAsync(context, MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, Constants.LOGIN_RETURN_URI_SCHEME);
        CacheUserCredentials(m.MobileAppUri.OriginalString, user);
    }

我的服务方法:

    public async Task<string> GetUserId()
    {
        var uri = new Uri(string.Format("https://fi-mobtest.azurewebsites.net/api/UserInfo?ZUMO-API-VERSION=2.0.0", string.Empty));
        var result = await azCli.InvokeApiAsync<HttpResponseMessage>("UserInfo", HttpMethod.Get, null);
        //var response = await hp.GetStringAsync(ur);
        //return response;
        return null;
    }

方法要求的api api的方法:

    public string GetUserInfo()
    {
        HttpContext currentContext = HttpContext.Current;
        string userName = currentContext.User.Identity.Name;
        return userName;
    }

实际上,当从Web浏览器中调用该API时,它会向我返回电子邮件地址,并且我可以从Microsoft.WindowsAzure.MobileServices包中访问UserId和MobileServiceUser的实例。

感谢您的帮助;

1 个答案:

答案 0 :(得分:0)

我终于找到了一种检索我需要的所有信息的方法

        hp.BaseAddress = new Uri("https://MyDomain.azurewebsites.net");
        var msg = new HttpRequestMessage(HttpMethod.Get, "/.auth/me");
        msg.Headers.Add("X-ZUMO-AUTH", azCli.CurrentUser.MobileServiceAuthenticationToken);
        msg.Headers.Add("ZUMO-API-VERSION", "2.0.0");
        var resp= await hp.SendAsync(msg);
        var rep = await resp.Content.ReadAsStringAsync();
        return r.ToString();

这样,我将获得一个json,其中包含有关当前用户的所有可用信息。