上传图片到Facebook(Android)

4
我正在使用官方的Facebook库发布照片,效果很好。 但我有一个疑问。第一次发布时,图片会出现在墙上方的消息中。但第二次发布时,它不会创建新的帖子,而是编辑之前的帖子并显示“已添加2张图片”。
如果帖子位于墙的底部,并重新发布照片,则我们将看不到任何置顶的消息,而是在内部消息中发布。这将被隐藏。
您能否每次我上传照片时都创建一个新帖子?这可能吗?
我分享我的代码,也希望其他人能帮助。谢谢。

OnClick:

mFacebook = new Facebook(APP_ID);
mFacebook.authorize(Principal.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {
@Override
public void onComplete(Bundle values) {
    postImageonWall();
     }
 @Override
 public void onFacebookError(FacebookError error) {
     }
 @Override
 public void onError(DialogError e) {
     }
 @Override
 public void onCancel() {
     }
  });

PostWall:

public void postImageonWall() {

        byte[] data = null;

          Bitmap bi = BitmapFactory.decodeFile(fotomontatgeInSD);
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
          data = baos.toByteArray();


          Bundle params = new Bundle();
          params.putString(Facebook.TOKEN, mFacebook.getAccessToken());
          params.putString("method", "photos.upload");
          params.putByteArray("picture", data);

          AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook);
          mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);
 }


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) {
     // TODO Auto-generated method stub

 }
}

我刚刚发现,新的Facebook设计解决了这个问题。

嘿,有人能帮我解决一下为什么在按照上述代码操作时会出现以下错误吗?错误信息如下:02-16 08:05:46.021: V/Facebook(5398): Facebook{"error_code":101,"error_msg":"Invalid API key","request_args":[{"key":"method","value":"photos.upload"},{"key":"format","value":"json"}]}。 - Quick learner
您的 API 密钥无效,请检查您是否已正确提供 API 密钥。 - Nitin
@ephramd 你解决这个问题了吗? - Alex Fragotsis
2个回答

0

尝试像这样编辑您的代码:

mAsyncRunner.request("me/photos", params, "POST", new SampleUploadListener(), null);

0

私有无返回值方法 sharePhotoToFacebook() { Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.f1);

    SharePhoto photo = new SharePhoto.Builder()
            .setBitmap(image)
            .build();

    SharePhotoContent content = new SharePhotoContent.Builder()
            .addPhoto(photo)
            .build();

    ShareApi.share(content, null);

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接