Cómo publicar en la pared de Facebook con Facebook android SDK, sin abrir el cuadro de diálogo
Estoy utilizando facebook sdk y con la ayuda del ejemplo dado con ese SDK he desarrollado un código para iniciar sesión y almacenar access_token en base de datos
Tengo dos problemas:
- Cómo abrir una aplicación FB con intención y mostrar una página similar en la aplicación FB?
- Clave no válida de Android y Facebook Connect
- Android: publicar en Facebook mediante programación con FB SDK 4.x
- ¿Cómo realizar un seguimiento de los usuarios de facebook orgánicos versus pagados en mi aplicación?
- Obtener inesperado CallbackManager, en la integración de facebook android
1). Cuando intento obtener access_token de la base de datos y pasarlo a facebook no me permite publicar en la pared con ese ejemplo dado con ese sdk de facebook, ¿por qué es así ??
2). He ido a través de ese código facebook.java, pero lo que tengo es que para publicar en una pared tengo que abrir un cuadro de diálogo, ya que no hay otro método para pasar mi mensaje de inmediato y enviar. Por favor, díganme la solución hacia ella o tel me wat ¿Debo hacer cuando quiero publicar en una pared sin abrir un cuadro de diálogo
mPostButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { String message = "Post this to my wall"; Bundle params = new Bundle(); params.putString("message", message); mAsyncRunner.request("me/feed", params, "POST", new WallPostRequestListener()); } }); public class WallPostRequestListener extends BaseRequestListener { public void onComplete(final String response) { Log.d("Facebook-Example", "Got response: " + response); String message = "<empty>"; try { JSONObject json = Util.parseJson(response); message = json.getString("message"); } catch (JSONException e) { Log.w("Facebook-Example", "JSON Error in response"); } catch (FacebookError e) { Log.w("Facebook-Example", "Facebook Error: " + e.getMessage()); } final String text = "Your Wall Post: " + message; Example.this.runOnUiThread(new Runnable() { public void run() { mText.setText(text); } }); } }
Lo que está mal con el código anterior .. su no publicar en la pared y me da Wall Post: vacío en el teléfono y el emulador de ambos
Gracias por adelantado..
- Cómo gestionar el objeto de respuesta de la API de Facebook de Android
- Hacer un login con facebook usando Facebook SDK 3.0
- Integración de Facebook en aplicaciones móviles multiplataforma
- Apprequest no envía la notificación
- Errores de red constantes para el diálogo de solicitud de Facebook en Galaxy Note
- No se pudo encontrar com.parse.bolts: bolts-android: 1.1.2. En el proyecto de la brecha del teléfono (estudio del androide)?
- El hash de clave de Facebook no coincide con ningún hash de clave almacenado
- RELEASE_KEY_ALIAS y RELEASE_KEY_PATH valores para generar clave hash
I aplicado código siguiente y podría publicado con éxito mi mensaje en la pared.
public void postOnWall(String msg) { Log.d("Tests", "Testing graph API wall post"); try { String response = mFacebook.request("me"); Bundle parameters = new Bundle(); parameters.putString("message", msg); parameters.putString("description", "test test test"); response = mFacebook.request("me/feed", parameters, "POST"); Log.d("Tests", "got response: " + response); if (response == null || response.equals("") || response.equals("false")) { Log.v("Error", "Blank response"); } } catch(Exception e) { e.printStackTrace(); } }
He actualizado mi tutorial en http://www.integratingstuff.com/2010/10/14/integrating-facebook-into-an-android-application/ y ahora está respondiendo exactamente a esta pregunta. Se basa en y básicamente lo mismo que la respuesta de Ankit, pero guía a la gente de principio a fin mediante la implementación de todo el proceso.
Bueno, no es que algo se publica en la pared sin informar al usuario. Cuando el usuario permite su aplicación, el Android Facebook sdk presenta otra página, donde hay un texto que envía sus aplicaciones, y un textBox donde el usuario puede escribir en su pared, similar a la captura de pantalla que he adjuntado
El diseño real en el dispositivo móvil es ligeramente diferente, pero está en el mismo formato. Este proceso se muestra bien en los ejemplos de ejemplos de facebook android sdk.
Ahora compruebe la pregunta hecha en este post:
Facebook Connect Android – usando stream.publish @ http://api.facebook.com/restserver.php '> Facebook Connect Android – usando stream.publish @ http://api.facebook.com/restserver.php
En esa pregunta busque estos: postParams.put (), tipo similar de líneas estará allí en algunos de sus archivos JAVA. Estas son las líneas con las que puedes publicar los datos en Facebook.
Por ejemplo:
postParams.put("user_message", "TESTING 123");
Es el mensaje,
postParams.put("attachment", "{\"name\":\"Facebook Connect for Android\",\"href\":\"http://code.google.com/p/fbconnect-android/\",\"caption\":\"Caption\",\"description\":\"Description\",\"media\":[{\"type\":\"image\",\"src\":\"http://img40.yfrog.com/img40/5914/iphoneconnectbtn.jpg\",\"href\":\"http://developers.facebook.com/connect.php?tab=iphone/\"}],\"properties\":{\"another link\":{\"text\":\"Facebook home page\",\"href\":\"http://www.facebook.com\"}}}");
Es la línea donde está proporcionando icono para la aplicación, descripción, título, título, etc
He utilizado el código de Ankit para publicar en la pared de facebook, pero su código me da error android.os.NetworkOnMainThreadException
.
Después de buscar en este problema una solución me dijo que poner su código en AsyncTask
para deshacerse de este problema. Después de modificar su código, funciona bien para mí.
El código modificado se ve así:
public class UiAsyncTask extends AsyncTask<Void, Void, Void> { public void onPreExecute() { // On first execute } public Void doInBackground(Void... unused) { // Background Work Log.d("Tests", "Testing graph API wall post"); try { String response = facebook.request("me"); Bundle parameters = new Bundle(); parameters.putString("message", "This test message for wall post"); parameters.putString("description", "test test test"); response = facebook.request("me/feed", parameters, "POST"); Log.d("Tests", "got response: " + response); if (response == null || response.equals("") || response.equals("false")) { Log.v("Error", "Blank response"); } } catch(Exception e) { e.printStackTrace(); } return null; } public void onPostExecute(Void unused) { // Result } }
Esta clase me ayuda a enviar mensajes en mi pared de Facebook SIN diálogo:
public class FBManager{ private static final String FB_ACCESS_TOKEN = "fb_access_token"; private static final String FB_EXPIRES = "fb_expires"; private Activity context; private Facebook facebookApi; private Runnable successRunnable=new Runnable(){ @Override public void run() { Toast.makeText(context, "Success", Toast.LENGTH_LONG).show(); } }; public FBManager(Activity context){ this.context = context; facebookApi = new Facebook(FB_API_ID); facebookApi.setAccessToken(restoreAccessToken()); } public void postOnWall(final String text, final String link){ new Thread(){ @Override public void run(){ try { Bundle parameters = new Bundle(); parameters.putString("message", text); if(link!=null){ parameters.putString("link", link); } String response = facebookApi.request("me/feed", parameters, "POST"); if(!response.equals("")){ if(!response.contains("error")){ context.runOnUiThread(successRunnable); }else{ Log.e("Facebook error:", response); } } } catch (Exception e) { e.printStackTrace(); } } }.start(); } public void save(String access_token, long expires){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); Editor editor=prefs.edit(); editor.putString(FB_ACCESS_TOKEN, access_token); editor.putLong(FB_EXPIRES, expires); editor.commit(); } public String restoreAccessToken(){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getString(FB_ACCESS_TOKEN, null); } public long restoreExpires(){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getLong(FB_EXPIRES, 0); }
}
- Web móvil: deshabilita la selección de texto de toque largo / taps
- ¿Cómo puedo activar las vibraciones y las luces con la API de notificaciones de Android?