Facebook Android SDK 4.0.0 no obtener información del perfil

Tengo un problema al obtener Profile.getCurrentProfile() después de iniciar sesión en Facebook en mi aplicación. Estoy usando Facebook Android SDK 4.0.0 . Después de iniciar sesión me gustaría obtener el nombre de usuario y mostrarlo en TextView pero estoy obteniendo el profile == null y no sé por qué. Tengo ID de aplicación y HashKey .

este es mi código

 public class MyFragment extends Fragment { CallbackManager callbackManager; LoginButton loginButton; FacebookCallback<LoginResult> loginResultFacebookCallback = new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { AccessToken accessToken = loginResult.getAccessToken(); Log.e("FB", String.valueOf(accessToken)); Profile profile = Profile.getCurrentProfile(); if (profile != null) { name.setText("Witam " + profile.getName()); Log.e("FB", "w"); } } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } }; TextView name; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getActivity().getApplicationContext()); callbackManager = CallbackManager.Factory.create(); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.myfragment_facebook, container, false); name = (TextView) view.findViewById(R.id.name); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); loginButton = (LoginButton) view.findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList("public_profile", "user_friends")); loginButton.setFragment(this); loginButton.registerCallback(callbackManager, loginResultFacebookCallback); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } } 

Cuando compruebo Token en Logcat consigo el AccessToken token:ACCESS_TOKEN_REMOVED

El perfil se obtiene de forma asíncrona después de que el inicio de sesión ocurra. Si desea realizar un seguimiento, similar a este ejemplo: https://github.com/facebook/facebook-android-sdk/blob/b384c0655fe96db71229bfdcb981a522f3f1e675/samples/SwitchUserSample/src/com/facebook/samples/switchuser/ProfileFragment.java# L54

Para mi, el perfil de código Profile = Profile.getCurrentProfile (); funciona cuando se instala la aplicación FB android, y la misma lanza una excepción de puntero nulo, cuando la aplicación fb se desinstala y por lo tanto en esa instancia mi aplicación llamada fb web app (que no devuelve el perfil). sdk

Facebook Login

Consulte esta URL de la API del gráfico de FB ….

Cómo obtener información de perfil de usuario de Facebook API Android

En lugar de loginresult.getAccessToken() , tiene que usar loginresult.getAccessToken().getToken() . Devuelve la cadena que contiene el token de acceso.

Tuve el mismo problema, este error es porque:

Profile.getProfile: Es la tarea Async

Resolví el problema utilizando este código:

  LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(final LoginResult loginResult) { if(Profile.getCurrentProfile() == null) { mProfileTracker[0] = new ProfileTracker() { @Override protected void onCurrentProfileChanged(Profile profile, Profile profile2) { Log.v("facebook - profile", profile2.getFirstName()); storeLogin(profile2.getName(), profile2.getProfilePictureUri(450, 450).toString(), loginResult.getAccessToken().getUserId()); openMainActivity(profile2.getName(), profile2.getProfilePictureUri(450, 450).toString(), loginResult.getAccessToken().getUserId()); loadingFace.dismiss(); mProfileTracker[0].stopTracking(); } }; mProfileTracker[0].startTracking(); } else { Profile profile = Profile.getCurrentProfile(); storeLogin(profile.getName(), profile.getProfilePictureUri(450, 450).toString(), loginResult.getAccessToken().getUserId()); openMainActivity(profile.getName(), profile.getProfilePictureUri(450, 450).toString(), loginResult.getAccessToken().getUserId()); loadingFace.dismiss(); } } @Override public void onCancel() { .... 

Atentamente

  • Error en la entrada de Facebook de Android
  • El inicio de sesión de Facebook falla en algunos dispositivos
  • Inicio de sesión de Facebook con la aplicación no instalada redirecciona a la página de inicio de sesión
  • Android, botón de inicio de sesión de Facebook causa bloqueo (SDK 4.0.0)
  • Android - Facebook SDK login -> cerrar sesión -> inicio de sesión no funciona
  • Error de SSL durante el inicio de sesión de Facebook en Android
  • Cómo obtengo, es el inicio de sesión de usuario o cerrar sesión en facebook sdk 4.0.1
  • Pantalla de inicio de Android Facebook no hay teclado
  • El inicio de sesión de API de Facebook falla con la aplicación FB instalada en el teléfono
  • Facebook Login / Google Login - ¿La misma actividad?
  • Inicio de sesión de Facebook: finaliza un error de hash de clave no válido, al intentar iniciar sesión de nuevo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.