4

ログインサンプルAndroidに従って、Session作業中のアプリのログイン フローを作成しました。ユーザーが経由でFacebookログインしたときにアプリがインストールされていない場合、いくつかのデバイスで問題が発生し、ページがログイン ページにリダイレクトされるように見えます。FacebookWebDialog

FacebookSDK 3.0.1を使用していますが、3.5 にアップグレードして問題が解決するかどうかを確認しましたが、解決しませんでした。3.0.1 SDK で提供されているサンプルは動作しません。3.5 SDK に含まれているサンプルは、私のアプリとまったく同じように動作します。

Facebookアプリがインストールされていない他のデバイスで以下のコードを試してみましたが、問題なく動作します。しかし、Nexus 7 (4.3 がインストールされている) でこれを試すと、上記の問題が発生します。

何か案は?

private Session.StatusCallback statusCallback = new SessionStatusCallback();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);

    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

    Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
        }
        if (session == null) {
            session = new Session(this);
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
        }
    }
}

@Override
public void onStart() {
    super.onStart();
    Session.getActiveSession().addCallback(statusCallback);
}

@Override
public void onStop() {
    super.onStop();
    Session.getActiveSession().removeCallback(statusCallback);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Session session = Session.getActiveSession();
    Session.saveSession(session, outState);
}

private void Login() {
    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
    } else {
        Session.openActiveSession(this, true, statusCallback);
    }
}

private void Logout() {
    Session session = Session.getActiveSession();
    if (!session.isClosed()) {
        session.closeAndClearTokenInformation();
    }
}

private class SessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
    //check session and see if we are logged in.
    }
}

編集:これへの更新。Samsung Galaxy S4 (Running 4.2.2) モデル番号 SGH-I337 で同じ例/アプリを試しましたが、このデバイスでも動作しません。アプリが承認されている場合はOKを押すかFacebook、アプリの通過を許可するためのモーションを実行できるという点で少し異なりますがFacebook、「エラーがログインしていません:ログインしていません。ログインして、もう一度お試しください。」

編集 2: これが私たちのアプリだけのものではないことを確認するために、Candy Crush をインストールしましたが、同じエラーが発生しました。

4

1 に答える 1

0

おそらく Facebook の単なるエラーです。バグ レポートを Facebook に送信し、テストしたデバイスとアプリ、およびそれぞれの結果を指定してください。以下は、Facebook Web サイトで報告されたまったく同じバグです: https://developers.facebook.com/bugs/160597354148944

Facebookはこれに対して「十分な証拠がありません。これを閉鎖します」と答えましたが、さらに証拠を投稿すれば、彼らは再び開いてこれを修正するかもしれません.

于 2013-10-03T23:15:08.910 に答える