Android发布图片到Facebook公共页面墙

时间:2013-01-02 21:34:58

标签: android facebook image-uploading facebook-comments facebook-android-sdk

我目前可以使用以下方式发布到公共页面墙:

JSONObject json = new JSONObject();
json.put("message", "I'm on your wall");



Request req = Request.newPostRequest(getSession(), "PowerCardSoftware/feed", GraphObject.Factory.create(json), new Callback() {
        @Override
        public void onCompleted(Response response) {
            if(response.getError() != null)
                Log.e("FRAGACTIVITY", response.getError().toString());
            Toast.makeText(getBaseContext(), "I hacked your facebook!", Toast.LENGTH_SHORT).show();
        }
    });
    Request.executeBatchAsync(req);

我想发布用户进入公共墙的图片。我尝试使用Bundle而不是JSONObject并使用以下每一行:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
postPhoto.compress(CompressFormat.JPEG, 100, baos);
params.putByteArray("picture", baos.toByteArray());
params.putByteArray("source", baos.toByteArray());

他们都给我一个这样的错误 - errorMessage:(#100)图片网址格式不正确

任何人都知道如何在不使用facebook sdk中弃用的功能/对象的情况下将照片发布到其他人的Facebook墙上?

3 个答案:

答案 0 :(得分:2)

这是我上传手机本地存储照片的代码:

        Request request6 = Request.newUploadPhotoRequest(
                session,
                ((BitmapDrawable) getResources().getDrawable(
                        R.drawable.picture)).getBitmap(), callback6);
        RequestAsyncTask task6 = new RequestAsyncTask(request6);
        task6.execute();

这是在您自己的墙上上传。没有选择选择其他收件人的原因是由于2月份的突破性更改将禁止发布到其他人的隔离墙。

See my earlier answer

编辑:

  

上传照片的最佳方式是什么,这张照片会在地方的墙上显示照片和信息?

你可以尝试一下,看看这是否有效?

    Bundle parameters = new Bundle();
    parameters.putParcelable("picture", YOUR_BITMAP_HERE);
    parameters.putString("message", "my message for the page");

    return new Request(session, "PowerCardSoftware/feed", parameters, HttpMethod.POST, callback);
  

我可以使用newUploadPhotoRequest()添加消息吗?

不,要在照片中添加消息,您将不会使用newUploadPhotoRequest。如果您深入了解源代码,它只是Request的包装器,所以与方法相同,但添加一个额外的参数message,并带有您想要的消息,然后执行它。我没有亲自验证它,但它应该工作。如果没有,请告诉我。

答案 1 :(得分:1)

这是我的解决方案。 我引用了Jesse Chen的答案并进行了一些修改。

Bitmap image = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "demo.jpg");
Bundle parameters = new Bundle();
parameters.putParcelable("source", image);
parameters.putString("message", "my message for the page");
Request request = new Request(Session.getActiveSession(), "me/photos", parameters, HttpMethod.POST, new Request.Callback() {
    @Override
    public void onCompleted(Response response) {
        showPublishResult(mainActivity.getString(R.string.photo_post), response.getGraphObject(), response.getError());
    }
});
request.executeAsync();

答案 2 :(得分:0)

您可以查看facebookSDK项目/测试文件夹并搜索关键字newPostRequest。 示例代码如下

GraphObject statusUpdate = GraphObject.Factory.create();
                String message = "message";
                statusUpdate.setProperty("message", message);
                statusUpdate.setProperty("link", "http://stackoverflow.com/questions/14129546/android-post-picture-to-facebook-public-page-wall#");
            Request request = Request.newPostRequest(Session.getActiveSession(), "me/feed", statusUpdate, new Callback() {

                @Override
                public void onCompleted(Response response) {

                }
            });
            request.executeAsync();