Problemas con la función Request.executeMeRequestAsync (session, Request.GraphUserCallback ())

Estoy siguiendo el tutorial para iniciar sesión en una aplicación de Android con Facebook.

He tenido muchos problemas con las claves hash y todo y creo que los he resuelto todos, porque mi sesión ya tiene el estado OPENED .

El problema que tengo ahora es que después de iniciar sesión en facebook, cuando la sesión ya está abierta, el código ejecuta el Request.executeMeRquestAsync() y nunca entra en la parte onComplete() … alguna idea?

Aquí está el código …

 package com.example.firstandroidapp; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.os.Bundle; import android.util.Base64; import android.util.Log; import android.widget.TextView; import com.facebook.Request; import com.facebook.Response; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.model.GraphUser; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // start Facebook Login Session.openActiveSession(this, true, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { try { PackageInfo info = getPackageManager().getPackageInfo("com.example.firstandroidapp", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.i("Digest: ", Base64.encodeToString(md.digest(), 0)); } } catch (NameNotFoundException e) { Log.e("Test", e.getMessage()); } catch (NoSuchAlgorithmException e) { Log.e("Test", e.getMessage()); } if (session.isOpened()) { // make request to the /me API Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { // callback after Graph API response with user object @Override public void onCompleted(GraphUser user, Response response) { // it never gets here... if (user != null) { TextView welcome = (TextView) findViewById(R.id.welcome); welcome.setText("Hello " + user.getName() + "!"); } } }); } } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); } } 

Gracias mucho de antemano. David.

Yo tuve el mismo problema.

El tutorial nos dice que debemos modificar AndroidManifest.xml. En la modificación puse las etiquetas abajo en lugares incorrectos (no utilicé Eclipse para modificar el archivo de manifiesto) y eso evitó la devolución de llamada.

 <manifest ...> ... <application ...> ... <activity android:name="com.facebook.LoginActivity"/> ... <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> ... </application> ... <uses-permission android:name="android.permission.INTERNET"/> ... </manifest> 

Prueba a revisar tu AndroidManifest.xml. El documento oficial será útil.

Session.openActiveSession devuelve la sesión directamente si ya está abierta. Este podría ser su problema. Es posible que la llamada de llamada no se llame en ese caso. (Todavía en el proceso de implementar esto yo mismo.)

Cree una instancia de SessionCallback antes de llamarla y, si la sesión se devuelve directamente, llámela:

 StatusCallback cb = new StatusCallback() {/* implement */}; Session fbSession = Session.openActiveSession(this, true, cb); if (fbSession != null) { cb.call(fbSession, fbSession.getState(), null); } 

Compruebe el estado de la sesión dentro de la devolución de llamada para que no tenga que manejar los diferentes estados dos veces.

  • ¿Cuál es la forma correcta de crear una pantalla de inicio de sesión / actividad en Android?
  • Cómo enviar datos POST con código en una vista web de Android
  • CircularRedirectException con autenticación de google
  • LinkedIn OAuth2 El servidor de autorización encontró una condición inesperada
  • Instagram de Android inicie sesión sin utilizar la vista web
  • El diálogo de inicio de sesión de Facebook desaparece después de la carga
  • Inicia sesión con Twitter en la aplicación de phonegap
  • No se pudo encontrar información sobre el proveedor de com.facebook.katana.provider.AttributionIdProvider
  • Nombre de usuario y correo electrónico en Parse Android
  • Compilación de error en "Usar el ejemplo de inicio de sesión de Facebook"
  • Actividad de inicio de sesión de Android y redirección de actividad de inicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.