Android アプリで Facebook ログインを使用している場合、パーミッション ポップアップが表示される前にコールバックが呼び出されます。私のコードでは、予想される動作は次のようになります。
- ユーザーがアプリを開く
- ユーザーが「サインイン」ボタンをクリックする
- FB 権限ダイアログが表示されます
- ユーザーが FB 権限を受け入れる
- 「こんにちは!」トーストメッセージが表示されます
ただし、実際の流れは次のとおりです。
- ユーザーがアプリを開く
- ユーザーが「サインイン」ボタンをクリックする
- 「こんにちは!」トーストメッセージが表示されます
- 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);
}
}
ありがとう