Android 使用graph API在Facebook墙上发布不起作用

Android 使用graph API在Facebook墙上发布不起作用,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我试图用GraphAPI将一些东西发布到Facebook墙上,但它对我来说不管用。 它没有错误,但也没有在我的墙上张贴任何东西 代码如下: public class ActivityName extends Activity{ Dialog dialog; Facebook fb; SharedPreferences sp; String access_token, name, email; @Override protected void

我试图用GraphAPI将一些东西发布到Facebook墙上,但它对我来说不管用。 它没有错误,但也没有在我的墙上张贴任何东西

代码如下:

public class ActivityName extends Activity{


    Dialog dialog;
    Facebook fb;
    SharedPreferences sp;
    String access_token, name, email;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.success);

            String APP_ID = "MY_ID";
            fb = new Facebook(APP_ID);
            sp = getPreferences(MODE_PRIVATE);
            access_token = sp.getString("access_token", null);
            long expires = sp.getLong("access_expires", 0);

            if(access_token!= null){
                fb.setAccessToken(access_token);
            }

            if(expires != 0){
                fb.setAccessExpires(expires);
            }

        ((Button) findViewById(R.id.btn_home)).setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                openContextMenu(v);

            }
        });

        ((Button) findViewById(R.id.btn_home)).setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {

            public void onCreateContextMenu(ContextMenu menu, View v,
                    ContextMenuInfo menuInfo) {
                // TODO Auto-generated method stub
                menu.setHeaderTitle("Tell the world!");
                menu.add(0, 0, 0, "Facebook");
                menu.add(0, 1, 0, "Twitter");
                menu.add(0, 2, 0, "Skip");
            }
        });

    }

    public boolean onContextItemSelected(MenuItem item) {
            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();

            switch (item.getItemId()) {
            case 1:



                break;

            case 0:

                 fb.authorize(SuccessActivity.this, new String[]{ "photo_upload,user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {
                        public void onComplete(Bundle values) {
                            postToWall();
                        }

                        public void onFacebookError(FacebookError error) {
                        }

                        public void onError(DialogError e) {
                        }

                        public void onCancel() {
                        }
                    });



                break;


            case 2:
                Intent i = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(i);
                overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);


                break;
            }
            return true;
            }

    public void onBackPressed() {

   }

    @SuppressLint("SdCardPath")
    public void postToWall() {
        // post on user's wall.
         try {
                if (fb.isSessionValid()) {
                    byte[] data = null;

                     Bitmap bi = BitmapFactory.decodeFile("/sdcard/Asa.jpg");
                     ByteArrayOutputStream baos = new ByteArrayOutputStream();
                     bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                     data = baos.toByteArray();


                     Bundle params = new Bundle();
                     params.putString(Facebook.TOKEN, fb.getAccessToken());
                     params.putString("message", "Test from Android AVD");
                     params.putByteArray("picture", data);



                     AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(fb);
                     mAsyncRunner.request("/me/feed", params,"POST", new SampleUploadListener(),null);

                }
            }catch(Exception e){
                e.printStackTrace();
            }

    }

    public class SampleUploadListener extends BaseRequestListener {

        public void onComplete(final String response, final Object state) {
            try {
                // process the response here: (executed in background thread)
                Log.d("Facebook-Example", "Response: " + response.toString());
                JSONObject json = Util.parseJson(response);
                final String src = json.getString("src");

                // then post the processed result back to the UI thread
                // if we do not do this, an runtime exception will be generated
                // e.g. "CalledFromWrongThreadException: Only the original
                // thread that created a view hierarchy can touch its views."

            } catch (JSONException e) {
                Log.w("Facebook-Example", "JSON Error in response");
            } catch (FacebookError e) {
                Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());
            }
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {    
        }
    }

}
有人能猜出这个代码有什么遗漏或错误吗?
如果您有任何想法,我们将不胜感激。

这里是我不久前用来做类似事情的一些代码:

function publishPost(session) {
var $title = $('#title').val(),
    $story = $('#story').val(),
    publish = {
        method: 'stream.publish',
        message: 'I just entered the Your Perfect Kent Day Competition.',
        picture : 'http://apps.facebook.com/perfect-kent-day/',
        link : 'http://apps.facebook.com/perfect-kent-day/',
        name: 'Enter to win or vote for your faourite story here!',
        caption: $title,
        description: $story,
        actions : { name : 'Apply for Kent Teach Jobs...', link : 'http://www.kent-       teach.com/'}
    };

    FB.api('/me/feed', 'POST', publish, function(response) {
    //alert('A post had just been published into the stream on your wall.');
        $('#before-submit').hide();
        $('#after-submit').show();
        $('#loading').fadeOut();
    });
};

当页面上的表单使用AJAX提交后,我调用了publishPost()函数。希望这有帮助

在Facebook Developer中注册应用程序时,你是否将“我的ID”替换为你的实际ID?检查你的互联网连接如果我错了,请更正我,但这是Javascript,而问题是关于Android的。