Publicar en pared FB Utilizar SDK 3.0

Hola compañeros programadores, tengo dificultades en el nuevo SDK de Facebook,

El escenario es:

Im usando el fragmento así que sigo estos pasos

¿Por qué no funciona la interfaz de Android Facebook con Fragments?

Y ahora estoy recibiendo el oncomplete y el ID de token

Ahora quiero publicar en mi pared por lo que ive creado esta función

private void publishStory(Session session) { if (session != null){ // Check for publish permissions session.addCallback(new StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { List<String> PERMISSIONS = Arrays .asList("publish_actions"); session .requestNewPublishPermissions(new Session.NewPermissionsRequest( getActivity(), PERMISSIONS)); Request request = Request.newStatusUpdateRequest( session, "Temple Hello Word Sample", new Request.Callback() { @Override public void onCompleted(Response response) { Log.i("fb:done = ", response.getGraphObject() + "," + response.getError()); } }); request.executeAsync(); } }); 

Y poner la Declaración sobre el Oncomplete

  public void call(final Session session, SessionState state, Exception exception) { if (session.isOpened()) { Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { publishStory(session); } else { Log.v("FACEBOOK ", "NO ACCESS"); } } }); } 

Mi problema está en esta línea de código session.addCallback(new StatusCallback() { salta el siguiente paso así terminando la función sin publicar en mi pared.

Estoy seguro de que la sesión está activa, ya que tengo ID de aplicación y token de acceso.

¿Alguna ayuda?

Gracias

EDITAR

Estoy utilizando este código basado en la respuesta a continuación y agregó nuevos permisos

 private void publishStoryTEST(final Session session) { if (session != null) { Bundle postParams = new Bundle(); postParams.putString("message", "TEST"); Request.Callback callback = new Request.Callback() { public void onCompleted(Response response) { JSONObject graphResponse = response.getGraphObject().getInnerJSONObject(); String postId = null; try { postId = graphResponse.getString("id"); } catch (JSONException e) { Log.i("JSON", "JSON error " + e.getMessage()); } FacebookRequestError error = response.getError(); Log.e("post response", response.toString()); if (error != null) { } else { } } }; List<String> PERMISSIONS = Arrays .asList("publish_actions"); session.requestNewPublishPermissions(new Session.NewPermissionsRequest(getActivity(), PERMISSIONS)); Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback); RequestAsyncTask task = new RequestAsyncTask(request); task.execute(); } } 

Pero aún estoy recibiendo un error diciendo

 The user hasn't authorized the application to perform this action 

¿Por qué es que todavía tengo ese error? ¿El permiso nunca se llama?

El problema es común, estoy compartiendo con usted el código fuente de trabajo del método de contabilización que estoy usando actualmente en mi aplicación.

 private void publishStory(String status) { Session session = Session.getActiveSession(); if (session != null) { Bundle postParams = new Bundle(); postParams.putString("message", status); Request.Callback callback = new Request.Callback() { public void onMalformedURLException(MalformedURLException e) { } public void onIOException(IOException e) { } public void onFileNotFoundException(FileNotFoundExceptione) { } public void onFacebookError(FacebookError e) { } public void onCompleted(Response response) { JSONObject graphResponse = response.getGraphObject().getInnerJSONObject(); String postId = null; try { postId = graphResponse.getString("id"); } catch (JSONException e) { Log.i("JSON", "JSON error " + e.getMessage()); } FacebookRequestError error = response.getError(); Log.e("post response", response.toString()); if (error != null) { } else { } } }; Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback); RequestAsyncTask task = new RequestAsyncTask(request); task.execute(); } } 

Espero que esto resuelva tu problema.

EDITAR:
Consulte los siguientes enlaces para obtener un procedimiento detallado de configuración de Facebook SDK 3.0 con permisos adecuados y funciones de publicación.
Publicar en Facebook después de que el inicio de sesión no funcione Android
http://www.kpbird.com/2013/03/android-login-using-facebook-sdk-30.html

// Intente abajo el código

 private void postData() { lnrPbr.setVisibility(View.VISIBLE); isSharingData = true; Session session = Session.getActiveSession(); if (session != null) { Bundle postParams = new Bundle(); postParams.putString("name", getIntent().getStringExtra("IN_SHARE_CAPTION") == null ? "" : getIntent().getStringExtra("IN_SHARE_CAPTION")); postParams.putString("caption", getIntent().getStringExtra("IN_SHARE_CAPTION") == null ? "" : getIntent().getStringExtra("IN_SHARE_CAPTION")); postParams.putString("description", getIntent().getStringExtra("IN_SHARE_DESCRIPTION") == null ? "" : getIntent().getStringExtra("IN_SHARE_DESCRIPTION")); postParams.putString("link", getIntent().getStringExtra("IN_SHARE_SHARELINK") == null ? "" : getIntent().getStringExtra("IN_SHARE_SHARELINK")); postParams.putString("picture", getIntent().getStringExtra("IN_SHARE_THUMB") == null ? "" : getIntent().getStringExtra("IN_SHARE_THUMB")); postParams.putString("message", getIntent().getStringExtra("IN_SHARE_MESSAGE") == null ? "" : getIntent().getStringExtra("IN_SHARE_MESSAGE")); Request.Callback callback = new Request.Callback() { public void onCompleted(Response response) { isSharingData = false; lnrPbr.setVisibility(View.GONE); FacebookRequestError error = response.getError(); if (error != null) { IjoomerUtilities.getCustomOkDialog(getString(R.string.facebook_share_title), error.getErrorMessage(), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { finish(); } }); } else { IjoomerUtilities.getCustomOkDialog(getString(R.string.facebook_share_title), getString(R.string.facebook_share_success), getString(R.string.ok), R.layout.ijoomer_ok_dialog, new CustomAlertNeutral() { @Override public void NeutralMethod() { finish(); } }); } } }; Request request = new Request(Session.getActiveSession(), "me/feed", postParams, HttpMethod.POST, callback); RequestAsyncTask task = new RequestAsyncTask(request); task.execute(); } } 

Consulte este tutorial ..

http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/

 public void postToWall() { // post on user's wall. facebook.dialog(this, "feed", new DialogListener() { @Override public void onFacebookError(FacebookError e) { } @Override public void onError(DialogError e) { } @Override public void onComplete(Bundle values) { } @Override public void onCancel() { } }); } 
  • Gestión de sesiones de Android
  • Reemplazo de código de Facebook obsoleto para Android
  • Patrón de diseño de inicio de sesión de aplicaciones de Android
  • Diseño y desarrollo de Android - Enfoques y mejores prácticas
  • SDK de Android Facebook: comprueba si el usuario está conectado o no
  • Permiso de denegación: proveedor de apertura com.android.providers.contacts.ContactsProvider2
  • Sesión de inicio de sesión - Actividades
  • Inicio de sesión de Android - autenticador de cuentas vs autenticación manual
  • Parámetros incorrectos: BadParametersError: Los parámetros eran incorrectos. Queríamos capacidades requeridas en la cuadrícula de Selenium mientras ejecuta Appium
  • Implementar reintento Cuando la lógica
  • Mantener sesión de cookie en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.