Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Token de acceso a Facebook siempre nulo

Tengo un código en mi actividad principal que llama a mi clase de actividad de Facebook de acceso si AccessToken.getCurrentAccessToken () es null:

import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.Toast; import com.facebook.AccessToken; import com.facebook.AccessTokenTracker; import com.facebook.CallbackManager; import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.Profile; import com.facebook.ProfileTracker; import com.facebook.login.LoginManager; import com.facebook.login.LoginResult; import java.util.Arrays; import matthewboyle.lurker_android.MainFeedScreen; import matthewboyle.lurker_android.utilities.ConnectionChecker; /** * Created by matthewboyle on 28/05/2017. */ public class FacebookLogin extends AppCompatActivity { private CallbackManager mCallbackManager; private AccessTokenTracker accessTokenTracker; private ProfileTracker profileTracker; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCallbackManager = CallbackManager.Factory.create(); accessTokenTracker = new AccessTokenTracker() { @Override protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) { Log.d("facebook", "onCurrentAccessTokenChanged"); } }; profileTracker = new ProfileTracker() { @Override protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) { Log.d("facebook", "onCurrentProfileChanged"); } }; accessTokenTracker.startTracking(); profileTracker.startTracking(); LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.d("facebook", "in on success"); AccessToken accessToken = loginResult.getAccessToken(); Log.d("permissions", accessToken.getPermissions().toString()); Log.d("facebook", "in on success,got a token and its "+accessToken); } @Override public void onCancel() { Log.d("facebook", "in cancel"); } @Override public void onError(FacebookException exception) { Log.d("facebook", "in error"); Log.d("facebook", exception.toString()); } }); LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_posts","user_likes","user_about_me","user_managed_groups","user_tagged_places")); Log.d("facebook", "Done so redirecting with "+AccessToken.getCurrentAccessToken()); startActivity(new Intent(FacebookLogin.this,MainFeedScreen.class)); } @Override protected void onActivityResult(int requestCode, int responseCode, Intent intent) { super.onActivityResult(requestCode, responseCode, intent); //Facebook login mCallbackManager.onActivityResult(requestCode, responseCode, intent); } } 

Si ejecuto este código, la única sentencia de impresión que recibo es:

  • Altura mínima del botón de Android: 48dp = 9mm?
  • Cómo alternar Android ListView texto vacío?
  • Almacenamiento de dimensiones en un archivo xml en Android
  • Diseño Android de Android TabLayout
  • Barra de búsqueda o barra de progreso con varios colores
  • Android WebView parece ignorar la información de "vista gráfica" en las páginas web
  •   Done so redirecting with null 

    No parece afectar a ningún otro método en la clase en absoluto.

    Vale la pena mencionar que este código funcionó bien hasta que reinstalé la aplicación. Fui a Facebook y actualizado la clave hash en mi aplicación, pero que no parecía ayudar. Sin embargo, no veo ningún error debido a la clave hash.

    Apreciaría cualquier ayuda.

  • Cómo obtener el número smsc de un teléfono en android?
  • Android: ¿Dónde poner el código onCreate () de la actividad en un fragmento?
  • Objetos de comunicación entre fragmentos múltiples en ViewPager
  • Sharedpreference byte valor eliminado después de que la aplicación se haya eliminado mediante 'Force Stop' o el administrador de tareas
  • ActionBarCompat & Transparencia
  • Cómo llamar al método GET simple usando "Retrofit"
  • 2 Solutions collect form web for “Token de acceso a Facebook siempre nulo”

    Necesita mover la línea "startActivity" dentro de su "onSuccess" callback como esto:

     LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.d("facebook", "in on success"); AccessToken accessToken = loginResult.getAccessToken(); Log.d("permissions", accessToken.getPermissions().toString()); Log.d("facebook", "in on success,got a token and its "+accessToken); Log.d("facebook", "Done so redirecting with "+AccessToken.getCurrentAccessToken()); startActivity(new Intent(FacebookLogin.this,MainFeedScreen.class)); } @Override public void onCancel() { Log.d("facebook", "in cancel"); } @Override public void onError(FacebookException exception) { Log.d("facebook", "in error"); Log.d("facebook", exception.toString()); } }); 

    Estoy utilizando Fb SDK 4.1 y este fragmento de código está trabajando para mí:

    Y como @Duda mencionado Usted necesita mover la línea "startActivity" dentro de su "onSuccess" de devolución de llamada

     @Override public void onSuccess(LoginResult loginResult) { AccessToken accessToken = loginResult.getAccessToken(); Log.d("facebook", "Done so redirecting with "+accessToken.getToken()); startActivity(new Intent(FacebookLogin.this,MainFeedScreen.class)); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.