0

我正在开发一个使用 Facebook API 的小应用程序。我想要做的是在第一次启动应用程序时显示我的登录/连接到 Facebook 页面(或者只要用户没有经过身份验证。

我的主要视图实际上是一个数据透视应用程序,但只要我没有 Facebook 访问令牌,我就不想展示它。我还希望能够从应用程序栏中访问此“登录”页面(它将与设置页面相同)。

知道我该怎么做吗?

4

2 回答 2

1

我建议使用自定义 UriMapper。这使您不必担心您的主页导航到登录页面,然后必须管理导航堆栈。

您可以在此处阅读有关此方法的详细信息。

为此,请修改 WMAppManifest 中的 DefaultTask 元素以导航到假页面

<DefaultTask Name="_default" NavigationPage="LaunchPage.xaml" /> 

然后创建一个 UriMapper 类

    public class LoginUriMapper : UriMapperBase
{
    public override Uri MapUri(Uri uri)
    {
        if (uri.OriginalString == "/LaunchPage.xaml")
        {
            // Determine for yourself how to store login info, AppSettings (IsoStore) is a good choice)
            if (NeedsLoginInfo) 
            {
                uri = new Uri("/LoginPage.xaml", UriKind.Relative);
            }
            else
            {
                uri = new Uri("/MainPage.xaml", UriKind.Relative);
            }
        }
        return uri;
    }
}

最后,在 Application_Launching 事件中为您的应用程序设置映射器

private void Application_Launching(object sender, LaunchingEventArgs e)
{
    RootFrame.UriMapper = new LoginUriMapper();

    // You should also handle logging in if you already have info
    // Determine for yourself how to store login info, AppSettings (IsoStore) is a good choice)
    if (NeedsLoginInfo == false)
    {
         LoginObject.Login();
    }
}

AND 在 Application_Activated 事件中,如果应用程序被墓碑化

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    if (e.IsApplicationInstancePreserved == false)
    {
        RootFrame.UriMapper = new LoginUriMapper();
    }
}
于 2012-06-14T03:21:46.307 回答
0

我相信你有两个选择:

  1. 显示您的主视图,然后在“已加载”处理程序中,检查用户之前是否已登录。如果还没有,则切换到登录页面。缺点是您的主视图会在切换到登录页面之前显示一秒钟。您可以显示“检查登录”选框或其他内容。

  2. 使您的启动页面成为一个简单的“正在加载...”页面。在此页面的“已加载”处理程序中检查用户是否已登录,然后切换到相应的页面。缺点是加载的页面将始终显示一秒钟。

我在商业应用程序中使用了第一种方法,看起来还不错。

于 2012-06-14T02:30:45.613 回答