Когда вы просите пользователя войти в мое приложение с помощью входа в систему Facebook, я хочу получить их адрес электронной почты и имя, чтобы создать пользовательскую учетную запись для нашего приложения. Однако, попросив их войти в систему через Facebook и авторизировать наше приложение для имени пользователя и электронной почты, приложение не переходит к фрагменту регистрации и вводит информацию в поля электронной почты и имени.Android-программирование - получение электронной почты и имени пользователя Facebook
В блоке LoginFragment у меня есть этот раздел кода, посвященный извлечению электронной почты и имени пользователя.
mFaceLogin = (LoginButton) v.findViewById(R.id.login_button);
mFaceLogin.setReadPermissions(Arrays.asList("email", "public_profile"));
mFaceLogin.setFragment(this);
mFaceLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
final AccessToken accessToken = loginResult.getAccessToken();
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse graphResponse) {
if (graphResponse.getError() == null) {
((MyRegisterListener) getActivity()).myStartRegisterFacebook(user.optString("first_name"), user.optString("email"));
}
}
});
}
@Override
public void onCancel() {
Toast.makeText(getActivity(), "fail", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Toast.makeText(getActivity(), "error", Toast.LENGTH_SHORT).show();
}
});
Метод myStartRegisterFacebook предполагают, чтобы сделать вызов на операцию и к коммутатору на RegisterFragment и отправить имя и адрес электронной почты в поле EditText отображаемых в макете XML-RegisterFragment в.
LoginActivity
@Override
public void myStartRegisterFacebook(String name, String email) {
RegisterFragment registerFragment = new RegisterFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.lr_container,
new RegisterFragment()).addToBackStack(null).commit();
registerFragment.updateInformation(name, email);
}
RegisterFragment
public void updateInformation(String name, String email) {
mFname.setText(name);
mEmail.setText(email);
}
Возможный дубликат [смог электронную почту и пол и DOB в Facebook входа в систему андроида] (http://stackoverflow.com/questions/32565805/unable-to -get-почта-и-пол-и-д.р.-в-facebook-логин-андроида) –