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