Я использую аутентификацию на основе Facebook в моем приложении. Когда пользователь нажимает кнопку входа в систему, после входа в систему я хочу перейти к следующему Activity
. Но после входа в систему кнопка изменилась, чтобы выйти из системы и остаться там некоторое время, а затем перейти к следующей операции примерно через 20 секунд.Android facebook login занимает слишком много времени
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main, container, false);
LoginButton authButton = (LoginButton) view
.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("email")); // permissions
internalStorageManipulator = new InternalStorageManipulator(
getActivity());
return view;
}
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
if(!IsStateOpened)
onSessionStateChange(session, state, exception);
}
};
private void onSessionStateChange(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
// callback after Graph API response with user
// object
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user != null && !IsStateOpened) {
try {
internalStorageManipulator
.setLoginState(true);
Dashboard dashboard = new Dashboard(getActivity());
internalStorageManipulator.setUserID(user.getId());
internalStorageManipulator.setLoginState(true);
internalStorageManipulator.setGCMID("");
// getAsyncProfilePicture();
dashboard.LoginUser(user.getId(), user.asMap().get("email").toString(),user.getUsername(), "",
(IHttpRequestCallBack) c);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
} else if (state.isClosed()) {
Log.i(LOGIN_TAG, "Logged out...");
}
}
@Override
public void onResume() {
super.onResume();
Session session = Session.getActiveSession();
if (!internalStorageManipulator.getLoginState())
if (session != null && (session.isOpened() || session.isClosed())) {
onSessionStateChange(session, session.getState(), null);
}
uiHelper.onResume();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
Возможно, потребуется время для аутентификации с серверами facebook. Достаточно ли интернет, к которому подключено ваше устройство? –
Да, это достаточно быстро. Пожалуйста, скажите мне, каким образом, после чего после входа в систему я просто перешел к следующей активности. –
Одна вещь, которую вы можете сделать, - выполнить процесс facebook в фоновом режиме и перейти к следующему действию, как только пользователь нажмет кнопку входа. –