Estou usando o seguinte código. Quero a data de nascimento, email e sexo do usuário. Por favor ajude. Como recuperar esses dados?
Este é o meu onViewCreated()
interior do fragmento.
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// Setup TextView.
mTextDetails = (TextView) view.findViewById(R.id.text_details);
// Set up Login Button.
LoginButton mButtonLogin = (LoginButton) view.findViewById(R.id.login_button);
// setFragment only if you are using it inside a Fragment.
mButtonLogin.setFragment(this);
mButtonLogin.setReadPermissions("user_friends");
mButtonLogin.setReadPermissions("public_profile");
mButtonLogin.setReadPermissions("email");
mButtonLogin.setReadPermissions("user_birthday");
// Register a callback method when Login Button is Clicked.
mButtonLogin.registerCallback(mCallbackManager, mFacebookCallback);
}
Este é o meu método de retorno de chamada.
private FacebookCallback<LoginResult> mFacebookCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("Shreks Fragment", "onSuccess");
Profile profile = Profile.getCurrentProfile();
Log.d("Shreks Fragment onSuccess", "" +profile);
// Get User Name
mTextDetails.setText(profile.getName() + "");
}
@Override
public void onCancel() {
Log.d("Shreks Fragmnt", "onCancel");
}
@Override
public void onError(FacebookException e) {
Log.d("Shreks Fragment", "onError " + e);
}
};
android
facebook-android-sdk
facebook-sdk-4.0
Sriyank Siddhartha
fonte
fonte
Respostas:
Essa não é a maneira correta de definir as permissões, pois você as substitui a cada chamada de método.
Substitua isto:
Com o seguinte, como o método
setReadPermissions()
aceita um ArrayList:Também aqui está como consultar dados extras GraphRequest:
EDITAR:
Um possível problema é que o Facebook assume que seu email é inválido. Para testá-lo, use o Graph API Explorer e tente obtê-lo. Se mesmo lá você não conseguir receber seu email, altere-o nas configurações do seu perfil e tente novamente. Essa abordagem resolveu esse problema para alguns desenvolvedores comentando minha resposta.
fonte
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
?Use este snippet para obter todas as informações do perfil
fonte
Você não receberá o perfil
onSuccess()
que precisa implementarProfileTracker
juntamente com o registro de retorno de chamadaTambém não se esqueça de lidar com o início e o fim do rastreador de perfil
Agora você terá um perfil para obter o AccessToken (resolvido o problema do perfil nulo). Você só precisa usar " https://developers.facebook.com/docs/android/graph#userdata " para obter quaisquer dados.
fonte
Após o login
fonte
Você pode usar a classe GraphRequest para emitir chamadas para a API do Facebook Graph para obter informações do usuário. Consulte https://developers.facebook.com/docs/android/graph para obter mais informações.
fonte
Isso funcionou para mim, espero ajudar alguém (usando meu próprio botão, não o botão de login do FB)
fonte
A seguir está o código para encontrar a ID do email, o nome e o URL do perfil, etc.
fonte
Aqui está uma solução funcional (2019): coloque esse código dentro da sua lógica de login;
fonte
Adicione esta linha no botão Clique no botão
loginButton.setReadPermissions (Arrays.asList ("public_profile", "email", "user_birthday", "user_friends"));
fonte
Use o método estático FB getCurrentProfile () da classe Profile para recuperar essas informações.
fonte