1

私のFB統合は非常に簡単です。ユーザーの登録とログインには、SDKを介してFBトークンを取得し、それをサーバーに渡すだけです。私のアプリからのグラフ呼び出しなどはこれ以上ありません。すべてはサーバーから行われます。次の静的クラスを使用して取得します。これは正常に機能します。ユーザーがFBホームページでアプリへのアクセスを取り消す場合を除いて、サーバーが明らかに使用できなくなった古いアクセストークンを取得します。

SDKに有効なトークンを取得させ、必要に応じてユーザーにもう一度アクセス許可を要求する方法はありますか?

public static void getAccessToken(Fragment fragment, final FacebookTokenListener listener) {
        Session currentSession = Session.getActiveSession();
        if (currentSession == null || currentSession.getState().isClosed()) {
            Session session = new Session.Builder(fragment.getActivity()).setApplicationId(
                    fragment.getString(R.string.facebook_app_id)).build();
            Session.setActiveSession(session);
            currentSession = session;
        }
        if (!currentSession.isOpened()) {
            Session.OpenRequest openRequest = null;
            openRequest = new Session.OpenRequest(fragment);

            if (openRequest != null) {
                openRequest.setPermissions(Configuration.FB_PERMISSIONS);
                openRequest.setCallback(new StatusCallback() {

                    @Override
                    public void call(Session session, SessionState state, Exception exception) {
                        Log.d(TAG, "call " + session.getAccessToken() + " , state: " + state.name() + " ,exception: "
                                + (exception == null ? "null" : exception.getMessage()));
                        if (session.isOpened()) {
                            Log.d(TAG, "fb token: " + session.getAccessToken());
                            listener.onAccessTokenReceived(session.getAccessToken());
                        }
                    }
                });
                currentSession.openForRead(openRequest);
            }
        } else {
            Log.d(TAG, "fb token: " + currentSession.getAccessToken());
            listener.onAccessTokenReceived(currentSession.getAccessToken());
        }
    }
4

0 に答える 0