2012-06-14 3 views
0

Я работаю над небольшим приложением, использующим API Facebook. То, что я хочу сделать, это показать мою учетную запись/подключиться к странице Facebook при первом запуске приложения (или до тех пор, пока пользователь не прошел аутентификацию.Показать страницу входа в систему при первом запуске приложения

Мой основной вид на самом деле является сводным приложением, но я не хочу чтобы показать, что до тех пор, пока у меня нет токена доступа к Facebook. Я также хочу иметь доступ к этой странице входа в систему из панели приложений (она будет такой же, как на странице настроек).

? идея, как я могу это сделать

ответ

2

Я бы порекомендовал использовать пользовательский UriMapper. Это позволяет не беспокоиться о том, что ваша главная страница переходит на страницу входа в систему, а затем управляет стеком навигации.

Подробнее об этом подходе можно прочитать здесь here.

Для этого измените элемент DefaultTask в WMAppManifest, чтобы перейти к поддельной странице

<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(); 
    } 
} 

И в заявке _Активированное событие, если приложение находится под надгробным камнем

private void Application_Activated(object sender, ActivatedEventArgs e) 
{ 
    if (e.IsApplicationInstancePreserved == false) 
    { 
     RootFrame.UriMapper = new LoginUriMapper(); 
    } 
} 
+0

Блестящий. Я не знал об этом методе. Спасибо за информацию. – Jon

+0

см. Мою дополнительную информацию о событии Application_Activated –

0

Я считаю, что у вас есть два варианта:

  1. Покажите основной вид, а затем в обработчике 'loaded', проверьте, был ли пользователь ранее зарегистрирован. Если они этого не сделали, перейдите на страницу входа. Недостатком является то, что ваш основной вид отображается за секунду до перехода на страницу входа. Вы можете показать «проверку входа» или что-то еще.

  2. Сделайте свою страницу запуска простой страницей «loading ...». в «загруженном» обработчике этой страницы проверьте, зарегистрирован ли пользователь или нет, а затем переключитесь на соответствующую страницу. Недостатком является то, что загруженная страница всегда будет отображаться на секунду.

Я использовал первый метод в коммерческом приложении, и это казалось прекрасным.

Смежные вопросы