Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MicrosoftAccountAsync登录总是失败_C#_Azure Mobile Services_Live Sdk - Fatal编程技术网

C# 使用MicrosoftAccountAsync登录总是失败

C# 使用MicrosoftAccountAsync登录总是失败,c#,azure-mobile-services,live-sdk,C#,Azure Mobile Services,Live Sdk,我已经创建了一个通用应用程序和azure移动服务。我遵循了azure网站提供的关于添加microsoft帐户身份验证的教程。为此,我正在使用最新的Live SDK 客户端,我正在使用此代码,这或多或少与教程无关: const string ReferralUrl = "https://my-url-here.azure-mobile.net/"; static MobileServiceClient MobileService = new MobileServiceClient(

我已经创建了一个通用应用程序和azure移动服务。我遵循了azure网站提供的关于添加microsoft帐户身份验证的教程。为此,我正在使用最新的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;
}
const string ReferralUrl=”https://my-url-here.azure-mobile.net/";
静态MobileServiceClient MobileService=新的MobileServiceClient(
"https://my-url-here.azure-mobile.net/",
“我的钥匙”);
移动服务用户;
专用LiveConnectSession(会话);;
专用异步任务身份验证()
{
var authClient=new LiveAuthClient(ReferralUrl);
while(_session==null)
{
var result=await authClient.LoginAsync(新[]{“wl.basic”});
if(result.Status==LiveConnectSessionStatus.Connected)
{
_会话=结果。会话;
var client=newliveconnectclient(result.Session);
var meResult=await client.GetAsync(“me”);
返回;
}
其他的
{
打破
}
}
_会话=空;
}
公共异步任务登录()
{
尝试
{
等待验证();
_用户=等待移动服务
.loginWithMicrosoftAccountSync(_session.AuthenticationToken);
}
捕获(例外情况除外)
{
//Debug.WriteLine(例如消息);
//返回false;
}
返回true;
}
以下事实已针对本申请进行了验证:

  • 已创建存储条目
  • 商店条目已与通用应用程序关联(这已针对win8.1和wp8.1项目执行)
  • 商店应用程序具有以下设置:
    • 移动或桌面:是
    • jwt:是的
    • 安全:已激活
    • 重定向url:设置为
在azure门户的“身份”选项卡中,已输入并保存客户端id和密码。但是,没有包SID(教程中也没有提到)

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

当我运行应用程序并调用Login时,它将导致401异常。不管我是在本地运行还是托管


有什么想法吗?

此功能-基于Microsoft帐户客户端SDK(live SDK)或Facebook的信息进行身份验证-目前移动服务的.NET后端不支持此功能。NET后端支持通过Microsoft/Facebook/Google/Twitter的web界面进行身份验证,或Azure Active Directory的客户端身份验证。对您想要的特性的支持应该在即将发布的版本中实现。您可以在实时查看上的公告