我正在开发一个使用 Facebook API 的小应用程序。我想要做的是在第一次启动应用程序时显示我的登录/连接到 Facebook 页面(或者只要用户没有经过身份验证。
我的主要视图实际上是一个数据透视应用程序,但只要我没有 Facebook 访问令牌,我就不想展示它。我还希望能够从应用程序栏中访问此“登录”页面(它将与设置页面相同)。
知道我该怎么做吗?
我正在开发一个使用 Facebook API 的小应用程序。我想要做的是在第一次启动应用程序时显示我的登录/连接到 Facebook 页面(或者只要用户没有经过身份验证。
我的主要视图实际上是一个数据透视应用程序,但只要我没有 Facebook 访问令牌,我就不想展示它。我还希望能够从应用程序栏中访问此“登录”页面(它将与设置页面相同)。
知道我该怎么做吗?
我建议使用自定义 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();
}
}
我相信你有两个选择:
显示您的主视图,然后在“已加载”处理程序中,检查用户之前是否已登录。如果还没有,则切换到登录页面。缺点是您的主视图会在切换到登录页面之前显示一秒钟。您可以显示“检查登录”选框或其他内容。
使您的启动页面成为一个简单的“正在加载...”页面。在此页面的“已加载”处理程序中检查用户是否已登录,然后切换到相应的页面。缺点是加载的页面将始终显示一秒钟。
我在商业应用程序中使用了第一种方法,看起来还不错。