【问题标题】:android facebook api post to wall with imageandroid facebook api 用图片贴到墙上
【发布时间】:2011-05-04 23:57:42
【问题描述】:

我希望能够使用 facebook android sdk 并发布到 facebook 的链接。我想要的一个例子是,如果你在 facebook 上并且你在你的状态部分输入一个链接,比如“http://www.google.com”。当您这样做时,会弹出一个框,您的帖子最终会成为一个包含图像和链接的块。我在 facebook api 中找到了使用附件的文档,但是当我尝试使用 android facebook api 执行此操作时,它似乎不起作用。我在网上找了几个小时,没有运气。谢谢。

【问题讨论】:

  • 你能发布你当前的代码吗?
  • 也许您可以分享您的解决方案?

标签: android facebook api


【解决方案1】:

这与进度对话框完美配合..我已经使用它...

您必须添加 Facebook 的罐子...

  Facebook authenticatedFacebook = new Facebook(APP_ID);

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

点击按钮调用下面的函数......

  authenticatedFacebook.authorize(YOUR_CLASS_NAME.this, PERMISSIONS, new FaceBookWallPostListener());

现在添加这个类...

  public class FaceBookWallPostListener implements DialogListener {

    public void onComplete(Bundle values) {
        new FacebookWallPost().execute();
    }

    public void onCancel() {
    }

    public void onError(DialogError e) {
        e.printStackTrace();
    }

    public void onFacebookError(FacebookError e) {
        e.printStackTrace();
    }
}

@Override
protected boolean isRouteDisplayed() {
    return false;
}





 private class FacebookWallPost extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        try {
            path = "Path OF YOUR IMAGE";
            Bundle parameters = new Bundle();
            parameters.putString("message", "MESSAGE YOU WANT TO POST");
            try {
                File file = new File(path, "IMAGE_NAME.jpg");
                Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
                byte[] data = null;
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
                data = baos.toByteArray();
                if (data != null) {
                    parameters.putByteArray("picture", data);
                }
                parameters.putString("access_token", authenticatedFacebook.getAccessToken());
                authenticatedFacebook.request("me");
                authenticatedFacebook.request("me/photos", parameters, "POST");
            } catch (Exception e) {
                return e.getMessage();
            }

            return "success";
        } catch (Exception e) {
            return e.getMessage();
        }
    }

    @Override
    protected void onPostExecute(String result) {
        pDialog.dismiss();
        if (result.equals("success")) {
            Toast.makeText(YOUR_CLASS_NAME.this, "WallPost Successfully Done", Toast.LENGTH_SHORT).show();
            try {
                new File(Environment.getExternalStorageDirectory().toString() + "/Diegodeals", "diegodeals.jpg").delete();
            } catch (Exception e) {
            }

        } else {
            Toast.makeText(YOUR_CLASS_NAME.this, "Failed to post \n " + result, Toast.LENGTH_SHORT).show();
        }

    }

    @Override
    protected void onPreExecute() {
        pDialog = new ProgressDialog(YOUR_CLASS_NAME.this);
        pDialog.setMessage("Posting Picture & Message on Facebook...");
        pDialog.show();
    }

}

/////祝你好运。

【讨论】:

    【解决方案2】:

    假设您在阅读本文时知道如何通过 api 登录 facebook 等...

      private void fbImageSubmit(Facebook fb, String imageurl, String caption, String description, String name, String linkurl)
        {
            if(fb != null)
            {
                if(fb.isSessionValid())
                {
                    Bundle b = new Bundle();
                    b.putString("picture", imageurl);
                    b.putString("caption",caption);
                    b.putString("description",description );
                    b.putString("name",name);
                    b.putString("link",linkurl);
                    try {
                        String strRet = "";
                        strRet = fb.request("/me/feed",b,"POST");
                        JSONObject json;
                        try {
                            json = Util.parseJson(strRet);
                            if(!json.isNull("id"))
                            {
                                Log.i("Facebook", "Image link submitted.");
                            }
                            else
                            {
                                Log.e("Facebook","Error: " + strRet);
                            }
                        } catch (FacebookError e) {
                            Log.e("Facebook","Error: " + e.getMessage());
                        }
                    } catch (Exception e) {
                        Log.e("Facebook", "Error: " + e.getMessage());
                    }
                }
            }
        }
    

    【讨论】:

    • +1 谢谢,帮我知道了一些要在包中传递的参数名称。
    • imageUrl 和 LinkUrl?它们是什么?
    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多