こんにちは私は現在Android用のFacebookSDK3.0を使用しています。ここに最初にいくつかの事実があります。
app_idをAndroidManifest.xmlに配置する代わりに、プログラムでJavaコードにその値を設定します。したがって、セッションを処理するときは、次のヘルパーメソッドのようなものを使用します。
if (session == null || session.isClosed()) { String applicationId = Persistent.getString(null, SocialUtil.FACEBOOK_APP_ID); session = new Session.Builder(Utils.ctx).setApplicationId(applicationId).build(); Session.setActiveSession(session); }
ユーザーがFacebookでログインすると、セッションは多くのアクティビティで使用されるため、セッションのアプリケーションコンテキストを提供しました。
セッションのコンテキストでわかるように、アプリケーションオブジェクトであるUtils.ctxを提供します。Facebook SDKのネイティブUiLifecycleHelperは、セッションが存在しないときにActivityを使用してセッションを作成するため、元のUiLifeCycleHelperに対処し、切り替えるだけで、独自のFBIUiLifecycleHelperを作成しました。
session = new Session(activity);
に
String applicationId = Persistent.getString(null, SocialUtil.FACEBOOK_APP_ID);
session = new Session.Builder(Utils.ctx).setApplicationId(applicationId).build();
。
ただし、アクティビティでセッション状態が変更されるたびに、コールバック関数がまったく呼び出されないようです。セッションを扱うときに、アクティビティコンテキストではなくアプリケーションコンテキストを使用したためだと思います。
私の質問は、1。セッションのコンテキストにアプリケーションコンテキストまたはアクティビティコンテキストを提供する場合、どのように異なりますか?2.いつ推奨される方法はどれですか?なぜ?3.ユーザーログインがアクティビティコンテキストでセッションを作成したとしましょう。このセッションがsetActiveSession()によって設定されると、getActiveSession()を呼び出すことにより、このセッションを他のアクティビティで使用できますか?たぶん、セッションコンテキストにアプリケーションコンテキストを実際に使用する必要はありませんか?
ありがとう!