C# 针对Windows Phone的Azure移动服务的身份验证问题

C# 针对Windows Phone的Azure移动服务的身份验证问题,c#,authentication,single-sign-on,windows-phone-8.1,azure-mobile-services,C#,Authentication,Single Sign On,Windows Phone 8.1,Azure Mobile Services,我正在尝试使用Azure移动服务的身份验证提供商与Google进行身份验证。我遵循了文档()中的教程,并将其应用于我的应用程序的登录屏幕。它确实显示了谷歌的登录提示,我输入凭证并单击登录。然后,它返回到我的应用程序的登录屏幕,而不是像预期的那样请求同意使用我的帐户详细信息 我不确定到底出了什么问题,也不知道如何找出问题所在。我对Windows Phone开发和Visual Studio开发有些陌生,更习惯于Android开发和Eclipse。这对我来说是新的,我迷路了 这是我用于谷歌认证的代码

我正在尝试使用Azure移动服务的身份验证提供商与Google进行身份验证。我遵循了文档()中的教程,并将其应用于我的应用程序的登录屏幕。它确实显示了谷歌的登录提示,我输入凭证并单击登录。然后,它返回到我的应用程序的登录屏幕,而不是像预期的那样请求同意使用我的帐户详细信息

我不确定到底出了什么问题,也不知道如何找出问题所在。我对Windows Phone开发和Visual Studio开发有些陌生,更习惯于Android开发和Eclipse。这对我来说是新的,我迷路了

这是我用于谷歌认证的代码

private async System.Threading.Tasks.Task aaGoogle()
{
    while (user == null)
    {
        string message;
        try
        {
            user = await App.MobileService
                .LoginAsync(MobileServiceAuthenticationProvider.Google);
            message = string.Format("You are now logged in - {0}", user.UserId);
        }
        catch (InvalidOperationException)
        {
            message = "You must log in. Login Required";
        }

        var dialog = new MessageDialog(message);
        dialog.Commands.Add(new UICommand("OK"));
        await dialog.ShowAsync();
    }
}

啊,微软的文档是不完整的。我的应用程序使用.NET后端和C#,默认回调URL是为Javascript后端创建的。因此.NET后端的正确回调URL为:

  • [mobileservice].azure-mobile.net/signin-twitter
  • [mobileservice].azure-mobile.net/signin-facebook
  • [mobileservice].azure-mobile.net/signin-google
  • [mobileservice].azure-mobile.net/signin-microsoft

在更改了所有相关服务的链接之后,登录屏幕和同意屏幕工作得非常好,我得到了每个帐户的登录详细信息。一切按计划进行。我希望这对其他人有所帮助。

两件事:请仔细检查AMS配置中谷歌项目的客户id/secret。另外,调试上述代码时会发生什么情况?有例外吗?是否填写了用户对象?仔细检查,两者都正确。没有异常,并且用户对象为null,这是有意义的,因为登录过程从未完成。改变了一些事情,仍然是相同的结果:没有同意屏幕。我最终创建了一个新的客户id和密码,并删除了旧的。在我将AMS配置更改为新配置并再次尝试该应用程序后,我现在在mscorlib.ni.dll中得到一个“System.ArgumentException”。这有关系吗?