Comment poster sur le mur facebook en utilisant Facebook android SDK, sans ouvrir la boîte de dialogue

j'utilise facebook sdk et avec l'aide de l'exemple donné avec ce SDK j'ai développé un code pour me connecter et stocker access_token dans la base de données

j'ai 2 problèmes:

1). quand j'essaie de récupérer access_token de la base de données et de le passer à facebook, il ne me permet pas de poster sur le mur en utilisant cet exemple donné avec ce sdk facebook, pourquoi est-ce ainsi??

2). j'ai vécu cette facebook.code java, mais ce que j'ai c'est que pour poster sur un mur je dois ouvrir un boîte de dialogue comme il n'y a pas d'autre méthode pour passer mon message immédiatement et post. Merci de m'indiquer la solution vis à vis d'elle ou tel me wat dois-je faire quand je veux poster sur un mur sans ouverture de la boîte de dialogue

   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);
                }
            });
        }
    }

ce qui ne va pas avec le code ci-dessus.. ce n'est pas poster sur le mur et me donner MUR Post: vide sur le téléphone et émulateur à la fois

Merci d'avance..

17
demandé sur Ankit 2010-11-18 13:25:47

5 réponses

j'ai appliqué le code suivant et j'ai réussi à afficher mon message sur wall.

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();
         }
    }
37
répondu Ankit 2010-12-07 12:11:20

j'ai mis à jour mon tutoriel à http://www.integratingstuff.com/2010/10/14/integrating-facebook-into-an-android-application/ et il répond maintenant exactement à cette question. Il est basé sur et essentiellement le même que la réponse D'Ankit, mais guide les gens du début à la fin à travers la mise en œuvre de l'ensemble du processus.

7
répondu Integrating Stuff 2011-12-04 16:33:33

ce n'est pas que quelque chose soit posté sur un mur sans en informer l'utilisateur. Lorsque l'Utilisateur autorise votre application, alors le sdk Facebook Android présente une autre page, où il ya un texte que vos applications envoie, et une boîte de textes où l'utilisateur peut écrire sur son mur, similaire à la capture d'écran que j'ai attaché

La configuration sur l'appareil mobile est légèrement différent, mais c'est dans le même format. Ce processus est bien illustré dans les exemples de facebook android SDK.

maintenant, vérifiez la question posée dans ce post:

Facebook connectez Android -- en utilisant stream.publier @ http://api.facebook.com/restserver.php Facebook connectez Android -- en utilisant stream.publier @ http://api.facebook.com/restserver.php

Par exemple:

postParams.put("user_message", "TESTING 123");

est le message,

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\"}}}");



est la ligne où vous fournissez l'icône pour l'application,la description, La légende, le titre, etc.

alt text

2
répondu viv 2017-05-23 10:30:23

j'ai utilisé le code D'Ankit pour poster sur le mur facebook mais son code me donne une erreur android.os.NetworkOnMainThreadException.

après avoir cherché sur ce problème une solution m'a dit que mettre votre code dans AsyncTask pour se débarrasser de ce problème. Après avoir modifié son code, ça marche très bien pour moi.

le code modifié ressemble à:

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
    }
}
1
répondu Deepak 2012-08-16 09:39:54

cette classe m'aide pour envoyer des messages sur mon mur Facebook sans boîte de dialogue:

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);        
  } 

}

1
répondu anivaler 2012-12-19 10:04:17