2

Android アプリで Facebook ログインを使用している場合、パーミッション ポップアップが表示される前にコールバックが呼び出されます。私のコードでは、予想される動作は次のようになります。

  1. ユーザーがアプリを開く
  2. ユーザーが「サインイン」ボタンをクリックする
  3. FB 権限ダイアログが表示されます
  4. ユーザーが FB 権限を受け入れる
  5. 「こんにちは!」トーストメッセージが表示されます

ただし、実際の流れは次のとおりです。

  1. ユーザーがアプリを開く
  2. ユーザーが「サインイン」ボタンをクリックする
  3. 「こんにちは!」トーストメッセージが表示されます
  4. FB 権限ダイアログが表示されます

私は基本的にこの回答のコードを使用し、アクティビティの作成ではなく、ユーザーがクリックしたときにログインを実行するボタンを追加しました。

public class MainActivity extends Activity implements StatusCallback {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void signIn(View view) {
    OpenRequest open = new OpenRequest(this);
    open.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
    open.setPermissions(Arrays.asList(new String[] { "email", "user_hometown" }));
    open.setCallback(this);
    Session s = new Session(this);
    s.openForRead(open);
  }

  @Override
  public void call(Session session, SessionState state, Exception exception) {
    CharSequence text = "Hi there!";
    int duration = Toast.LENGTH_SHORT;
    Toast toast = Toast.makeText(getApplicationContext(), text, duration);
    toast.show();
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (Session.getActiveSession() != null)
      Session.getActiveSession().onActivityResult(this, requestCode,
          resultCode, data);
  }
}

ありがとう

4

1 に答える 1