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

かつ、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

私はあなたが2つの選択肢があると信じています:

  1. プライマリビューを表示してから、「ロードされた」ハンドラーで、ユーザーが以前にログインしたことがあるかどうかを確認します。そうでない場合は、ログインページに切り替えます。欠点は、ログインページに切り替える前にプライマリビューが1秒間表示されることです。「ログインの確認」マーキーなどを表示できます。

  2. スタートアップページを単純な「読み込み中...」ページにします。このページの「ロード済み」ハンドラーで、ユーザーがログインしているかどうかを確認してから、適切なページに切り替えます。欠点は、ロードされたページが常に1秒間表示されることです。

私は商用アプリで最初の方法を使用しましたが、問題ないようでした。

于 2012-06-14T02:30:45.613 に答える