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
- Esta aplicación no tiene hashes de clave de Android configurados. - Inicie sesión con Facebook SDK
- Cómo cambiar el idioma de com.facebook.widget.LoginButton en Android
- Inicio de sesión de Facebook en el fragmento en android
- Login de Android Facebook "LoginActivity could not be started"
- El estado de Facebook no se actualizó. Error 403, error de autenticación, SocialAuthException en Android
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
- Inicio de sesión de Android Facebook SDK 4.0 con LoginManager
- Android facebook Api Exception
- android - cómo cambiar el texto en facebook botón de inicio de sesión
- Facebook Login CallbackManager FacebookCallback llamado onCancel () cada vez
- Facebook - Android autoriza el error de la aplicación
- Botón de inicio personalizado de Facebook en el estudio android
- "Error de cookies no habilitado" en algunos dispositivos
- Error de inicio de sesión: hay un error al iniciar sesión en esta aplicación. Por favor, inténtelo de nuevo más tarde
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
- Procese el comando sin iniciar MainActivity, en Android
- Cómo hacer LibGDX + Android Studio jar archivo?