LoginWithMicrosoftAccountAsync始终失败并显示401

时间:2014-05-11 10:10:58

标签: c# azure-mobile-services live-sdk

我创建了一个通用应用程序和一个天蓝色的移动服务。我按照azure网站上提供的添加微软帐户身份验证的教程进行了操作。我正在使用最新的Live SDK。

客户方面,我正在使用这个代码,这或多或少地偏离了教程:

const string ReferralUrl = "https://my-url-here.azure-mobile.net/";

static MobileServiceClient MobileService = new MobileServiceClient(
          "https://my-url-here.azure-mobile.net/",
          "my key");

MobileServiceUser _user;

private LiveConnectSession _session;
private async Task Authenticate()
{
    var authClient = new LiveAuthClient(ReferralUrl);
    while (_session == null)
    {
        var result = await authClient.LoginAsync(new[] { "wl.basic" });
        if (result.Status == LiveConnectSessionStatus.Connected)
        {
            _session = result.Session;
            var client = new LiveConnectClient(result.Session);
            var meResult = await client.GetAsync("me");
            return;
        }
        else
        {
            break;
        }
        }

    _session = null;
}

public async Task<bool> Login()
{
    try
    {
        await Authenticate();
        _user = await MobileService
                .LoginWithMicrosoftAccountAsync(_session.AuthenticationToken);
        }
    catch (Exception ex)
    {
        //Debug.WriteLine(ex.Message);
            //return false;
    }

    return true;
}

以下事实已经过验证:

  • 已创建商店条目
  • 商店条目已与通用应用程序相关联(已针对win8.1和wp8.1项目执行此操作)
  • 商店应用程序具有以下设置:

在azure门户网站的身份标签页中,输入并保存了客户端ID和密码。但是,没有package-SID(教程中也没有提到)。

我下载了使用移动服务创建的服务项目,并将其添加到我的解决方案中。此外,我已将SetIsHosted(true)标志添加到WebApiConfig类。最后,我将AuthorizeLevel属性添加到TodoItemController并将其设置为User Level。该服务已成功发布到azure。

当我运行我的应用程序并调用Login时,将导致401异常。如果我在本地或托管它运行它无关紧要。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此功能 - 基于来自客户端SDK for Microsoft帐户(实时SDK)或Facebook的信息的身份验证 - 目前在.NET后端移动服务中不受支持。 .NET后端支持的是通过Microsoft / Facebook / Google / Twitter的Web界面进行身份验证,或者对Azure Active Directory进行客户端身份验证。您希望的功能支持应该在即将发布的版本中实现。您可以查看Azure Mobile team blog有关何时发布的公告。