Хорошо, я хочу передать детали при переходе к следующему занятию.Детали, такие как имя, адрес электронной почты, профиль, пол.
Это не происходит каким-либо образом, когда пользователь вошел в систему. Однако детали отправляются, когда я вхожу в первый раз.
Итак, у меня есть два вопроса:
1) Почему детали не отображаются, когда пользователь уже вошел в систему?Есть ли что-то, что нужно изменить в коде?
2) Иногда, когда я открываю приложение после долгого времени, оно не перемещается на DetailsActivity
и открывает MainActivity
с LoginButton с текстовым выходом из системы (поэтому очевидно, что он все еще вошел в систему, но возвращает ноль).
Посмотрите на мой код:
AccessTokenTracker accessTokenTracker;
AccessToken accessToken = AccessToken.getCurrentAccessToken();
наСоздать
callbackManager = CallbackManager.Factory.create();
loginButton.setReadPermissions(Arrays.asList("email, public_profile"));
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email, public_profile"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
getUserDetails(loginResult);
}
@Override
public void onCancel() {
//cancelled
}
@Override
public void onError(FacebookException exception) {
//handle error
}
});
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
accessToken = currentAccessToken;
}
};
// If already logged in show the home view
if (accessToken != null && Profile.getCurrentProfile()!=null) {
try {
Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
startActivity(intent);
finish();
}
catch (RuntimeException e) {
e.printStackTrace();
}
}
else {
databaseHelper.deleteAll();
}
}
private void getUserDetails(LoginResult loginResult) {
GraphRequest data_request = GraphRequest.newMeRequest(
accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject json_object,
GraphResponse response) {
Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
intent.putExtra("userProfile", json_object.toString());
startActivity(intent);
finish();
}
});
Bundle permission_param = new Bundle();
permission_param.putString("fields", "id,name,email,picture.width(120).height(120),gender");
data_request.setParameters(permission_param);
data_request.executeAsync();
}