El diálogo de la parte posterior del facebook de la identificación del poste vuelve siempre null en androide
Utilicé la identificación de la aplicación de prueba y registro por usuario de prueba crear en la aplicación de dash_board en facebook desarrollar el sitio, requieren permiso pulish_actions cuando inicio de sesión con el botón de inicio de sesión widget de facebook sdk pero resultado obtener postid siempre = null. Aquí está mi código:
.... shareDialog = new ShareDialog(MainActivity.this); shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { @Override public void onSuccess(Sharer.Result result) { if (result.getPostId() != null) Log.e(TAG, result.getPostId()); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } }); pulishButton.setOnClickListener(this); try{ loginButton.setPublishPermissions(new String[]{"publish_actions","publish_stream"}); }catch (FacebookException e){ e.printStackTrace(); } loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.e(TAG, "success"); loginButton.setEnabled(false); pulishButton.setEnabled(true); GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject json, GraphResponse response) { if (response.getError() != null) { // handle error System.out.println("ERROR"); } else { System.out.println("Success"); } catch (JSONException e) { e.printStackTrace(); } } } }).executeAsync(); } @Override public void onCancel() { Log.e(TAG, "On cancel"); } @Override public void onError(FacebookException e) { Log.d(TAG, e.toString()); } });
- Android Facebook SDK 4 en Eclipse
- Android compartir imagen URL con Facebook SharePhotoContent
- La aplicación de Android con Facebook no funciona con la aplicación de Facebook instalada
- Cómo inhabilitar el registro de eventos de Facebook SDK?
- Android Facebook 4.0 SDK Cómo obtener correo electrónico, fecha de nacimiento y sexo del usuario
- Facebook Android SDK 4.0: newGraphPathRequest devuelve "Un token de acceso activo debe utilizarse para consultar información sobre el usuario actual."
- FacebookCallback.onCancel se llama cuando se intenta iniciar sesión con facebook sdk
- Fusión de manifiesto de Android con las bibliotecas de facebook y firebase
- No se puede importar facebook-sdk 4.0.1
- Guardar información sobre el usuario de facebook para usar en otra actividad
- La URL de Google Play desordena el diálogo compartido de Facebook
- El botón de inicio de sesión de Facebook provoca un bloqueo
- Facebook SDK 4 para Android - cómo cerrar sesión mediante programación
La solución es obligar a ShareDialog a utilizar el modo Feed y evitar el uso de la App de FB para compartir:
shareDialog.show(linkContent, ShareDialog.Mode.FEED);
Creo que esto es un error de FB. No envían postId a la devolución de llamada onSuccess cuando usan FB App para compartir (postId = null), pero lo hacen si usan Feed.
He oído que puedes evitar el problema "postId = null" usando el inicio de sesión de Facebook y exigiendo el permiso "publish_actions". Pero no creo que esta sea la manera correcta de lidiar con este problema. Respecto al mencionado permiso, Facebook afirma:
La publicación a través de diálogos o plugins sociales no requiere este permiso. No solicites revisión de este permiso si solo estás usando el diálogo Compartir, Diálogo de Feed, Diálogo de Mensajes, etc., o Plugins Sociales (por ejemplo, el botón Like).
Documentos de Facebook en el diálogo Compartir:
Esto no requiere el inicio de sesión de Facebook ni ningún permiso extendido, por lo que es la forma más fácil de habilitar el uso compartido en la web.
No puedes iniciar sesión directamente con "publish_action", primero debes iniciar sesión con cualquier permiso de lectura y luego pedir permisos de publicación https://developers.facebook.com/docs/facebook-login/permissions/v2.4#publishing
- ¿Cómo puedo probar la unidad RecyclerView, LinearLayoutManager en Robolectric?
- Proteger una API REST para su uso por clientes Android