0

Facebook を使用してユーザーを認証する Android アプリを作成し、後でアクセス トークンを Web アプリケーション サーバーに渡したいと考えています。

アプリは、ユーザーが認証された後にのみ機能します。そのため、開始したらすぐに Facebook セッションを開き、アクセス トークンを使用して独自のサーバーに連絡して詳細を確認する必要があります。その後、同じ Facebook セッションがさまざまなアプリ アクティビティで使用されます。

Facebook セッションの処理方法がわかりません。ここで説明されているように、最初のアクティビティにログイン ボタンを 1 つ配置しますか? セッション状態が変化した場合、他のアクティビティで何をすればよいですか? すべてのアクティビティに Facebook ログインを追加したくありません...

または、SDK のログイン サンプルに示されているように、独自のボタンを使用することもできます。しかし、別のアクティビティを行っているときにセッションが閉じられると、同じ管理上の問題が発生します。

または、すべてを同じアクティビティに入れ、異なるフラグメントを使用することもできます。

ベストプラクティスの方法は何ですか?

注:問題に関するSOの質問のほとんどは、古いSDKに関連しています(現在は非推奨Facebookのクラスを使用しています)。

4

2 に答える 2

1

最も簡単な方法は、単一のアクティビティを使用してすべてのセッション状態の変更を処理し、それを使用して UI の変更を駆動することです。いずれにせよ、Android は Fragment モデルを推し進めているので、それが最善の策だと思います。

または、別のアクティビティを使用する必要がある場合は、現在のアクティビティへの参照を持つ共通の Session.StatusCallback 実装をいつでも使用できます。次に、状態の変化によって UI の変化が発生した場合に、新しいアクティビティを開始するインテントを作成できます。

于 2013-02-19T18:09:15.427 に答える
0

このようにFacebookセッションを取得できます

Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(getActivity(), null, statusCallback, savedInstanceState);
        }
        if (session == null) {
            session = new Session(getActivity());
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
        }
    }
于 2013-02-19T08:36:17.390 に答える