Post-Meldung auf der facebook wall in android

Bin ich mit diesem code, um eine Nachricht zu senden, die auf der Wand auf mein facebook:

import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

public class ShareOnFacebook extends Activity{


    private static final String[] PERMISSIONS = new String[] {"publish_stream"};

    private static final String TOKEN = "access_token";
        private static final String EXPIRES = "expires_in";
        private static final String KEY = "facebook-credentials";

    private Facebook facebook;
    private String messageToPost;

    public boolean saveCredentials(Facebook facebook) {
            Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
            editor.putString(TOKEN, facebook.getAccessToken());
            editor.putLong(EXPIRES, facebook.getAccessExpires());
            return editor.commit();
        }

        public boolean restoreCredentials(Facebook facebook) {
            SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
            facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
            facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
            return facebook.isSessionValid();
        }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        facebook = new Facebook(getResources().getString(R.string.facebook_app_id));
        restoreCredentials(facebook);


        setContentView(R.layout.facebook_dialog);

        String facebookMessage = getIntent().getStringExtra("facebookMessage");
        if (facebookMessage == null){
            facebookMessage = "Test wall post";
        }
        messageToPost = facebookMessage;
        if (! facebook.isSessionValid()) {
            loginAndPostToWall();
            finish();
        }
        else {
            postToWall(messageToPost);
        }
    }



    public void loginAndPostToWall(){
         facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
    }

    public void postToWall(String message) {
        FacebookPoster fp = new FacebookPoster();
        fp.execute(message, null, null);
        }
        private class FacebookPoster extends AsyncTask {

        protected void onPostExecute(String result) {
        showToast(result);
        finish();
        }

        @Override
        protected Object doInBackground(Object... params) {
            Bundle parameters = new Bundle();
            parameters.putString("message", "Test");
            parameters.putString("description", "topic share");
            try {
            facebook.request("me");
            String response = facebook.request("me/feed", parameters, "POST");
            Log.d("Tests", "got response: " + response);
            if (response == null || response.equals("")
            || response.equals("false")) {
            return "Blank response.";
            } else {
            return "Message posted to your facebook wall!";
            }
            } catch (Exception e) {
            Log.d("ShareOnFacebook" , e.getMessage());
            return "Failed to post to wall!";
            }
        }
        }
    class LoginDialogListener implements DialogListener {
        public void onComplete(Bundle values) {
            saveCredentials(facebook);
            if (messageToPost != null){
            postToWall(messageToPost);
        }
        }
        public void onCancel() {
            showToast("Authentication with Facebook cancelled!");
            finish();
        }
        @Override
        public void onFacebookError(FacebookError e) {
            showToast("Authentication with Facebook failed!");
            finish();

        }
        @Override
        public void onError(DialogError e) {
            showToast("Authentication with Facebook failed!");
            finish();

        }
    }

    private void showToast(String message){
        Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
    }
}

aber etwas ist falsch, denn:
1) ich kann nicht, siehe mein post auf meiner Pinnwand.
2) Wenn ich auf erneut senden post muss ich wieder einloggen.
Wie kann ich das beheben meine Probleme?

  • Prüfen Sie zunächst, ob Sie alle aktiven Sitzungen und Benutzer eingeloggt ist, wenn nicht müssen Sie zur Anmeldung Ihren Benutzer, speichern Sie die Sitzung, und nach, dass die post die Nachricht auf Ihrer Wand.
  • wie kann ich das tun? Können Sie irgendein Beispiel?
  • Bekomme ich sowas in den logs: {Session-Zustand:GEÖFFNET, token:{AccessToken token:ACCESS_TOKEN_REMOVED Berechtigungen:[E-Mail]},}
InformationsquelleAutor edi233 | 2013-04-29
Schreibe einen Kommentar