3

我正在为 Windows Phone 8 开发一个应用程序。我正在尝试使用这个非常简单的示例来实现身份验证:http: //www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users -wp8/,然后是这个:http: //www.windowsazure.com/en-us/develop/mobile/tutorials/authorize-users-in-scripts-wp8/。我的应用程序必须继续能够验证和控制我的应用程序用户的访问权限。具体来说,我的问题在这里:

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

这与两个教程的代码一样多。它启动登录屏幕,user = await App.MobileService .LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount); 但在接受登录凭据后,它开始显示错误消息,即:

+       $exception  {System.InvalidOperationException: Cannot start a login operation because login is already in progress.

at Microsoft.WindowsAzure.MobileServices.MobileServiceClient.<SendLoginAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()
at SeeThrough.MainPage.<Authenticate>d__7.MoveNext()}   System.Exception {System.InvalidOperationException}

它重复这个过程,因为“用户”永远不会被分配,因为“登录已经在进行中”的情况。我在网上找不到任何可以帮助的东西,我已经搜索了这个错误,并且只得到了 4 个确切问题的命中,这些问题是 github 代码的一部分,据我所知没有任何帮助。

4

2 回答 2

0

我认为您没有正确配置帐户。请在实时仪表板的应用注册页面中提供正确的移动服务 URL。如果 URL 不正确,则更有可能出现此类异常!

于 2013-03-22T11:11:26.543 回答
0

老问题,但这对我有帮助。

引用MSDN 论坛的答案

我忘了提一下,我们的教程尚未针对 windows phone 8.1 进行更新,因此您还需要在 app.xaml.cs 中添加以下代码(此代码段适用于通用应用程序,phone 8.1 将是相同的只是不需要它是有条件的)

protected override void OnActivated (IActivatedEventArgs args)
{
    base.OnActivated (args);

#if WINDOWS_PHONE_APP
    if (args.Kind == ActivationKind.WebAuthenticationBrokerContinuation)
        App.<mobileservice>.LoginComplete (args as WebAuthenticationBrokerContinuationEventArgs);
#endif
}
于 2015-08-09T02:10:15.350 回答