0

ビルドがターゲットにしている実稼働/テスト環境に基づいて、Facebook アプリに異なるアプリケーション ID があります。その結果、マニフェストではなくコードで ApplicationId を設定しています。

アプリが初めて起動されると、Session.openActiveSessionFromCache は NullPointerException をスローします (「引数 'applicationId' を null にすることはできません」)。エラーをキャッチし、SessionBuilder を使用してセッションの作成に進み、ユーザーがログインして権限を承認します。

ただし、アプリケーションのその後のすべての起動では、Session.openActiveSessionFromCache は引き続き NullPointerException をスローします。その後のすべての起動で、ユーザーがサイレントにログインすることを期待しています。ApplicationId がメタデータではなくコードで設定されている場合、キャッシュされたセッションにアクセスできないのはなぜですか?

//in MyActivity.onStart()
Session session = null;
if (BuildConfig.DEBUG == true) {
    MY_FACEBOOK_APP_ID = "my debug applicationId";
} else {
    MY_FACEBOOK_APP_ID = "my release applicationId";
}

try {
    session = Session.openActiveSessionFromCache(getApplicationContext());
} catch (NullPointerException e) {
    Log.e(TAG, e.getMessage());
}
if (session == null) {
    session = new Session.Builder(getApplicationContext())
        .setApplicationId(MY_FACEBOOK_APP_ID)
        .build();
}
4

1 に答える 1