2012-06-20 121 views
0

我无法上传从SD卡在Facebook上的图像...我用下面的代码....但它没有给我错误,但在同一时间它没有上传图片从android SD卡上传图片到facebook

 byte[] data = null; 
    try { 
     FileInputStream fis = new FileInputStream(filepath); 
     BitmapFactory.Options options = new BitmapFactory.Options();     
      options.inSampleSize = 2; 
     Bitmap bi = BitmapFactory.decodeStream(fis); 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bi.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
     data = baos.toByteArray(); 
     } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     Log.d("onCreate", "debug error e = " + e.toString()); 
     }  

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

回答

0

你必须这样做:

mAsyncRunner = new AsyncFacebookRunner(fbObj); 
    mAsyncRunner.request(null, parameters, "POST", 
         new RequestListener() { 

          @Override 
          public void onMalformedURLException(
            MalformedURLException e, Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onIOException(IOException e, Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onFileNotFoundException(
            FileNotFoundException e, Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onFacebookError(FacebookError e, 
            Object state) { 
           // TODO Auto-generated method stub 

          } 

          @Override 
          public void onComplete(String response, Object state) { 
           // TODO Auto-generated method stub 
           Log.i("upload", "image uploaded!!!! " + response); 
          } 
         }, null); 
+0

我增加了这段代码,但在facebook对话框中显示“发生错误”,请稍后重试。 –

+0

它在logcat中显示的内容?贴吧在这里 –

+0

{“错误”:{“消息”:“一个积极的访问令牌必须用于查询当前用户的信息。”,“类型”:“OAuthException”,“代码”:2500}} –

1

尝试以下摘录从SD卡后的图像:

转换图像为位图,然后继续

private void postToWall() { 
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bm.compress(Bitmap.CompressFormat.PNG, 100, stream); // where bm is bitmap from Sdcard 
    byte[] byteArray = stream.toByteArray(); 
    Bundle param = new Bundle(); 
    param = new Bundle(); 
    param.putString("message", "All"); 
    param.putString("filename", "TEst"); 
    param.putByteArray("image", byteArray); 
    mAsyncRunner.request("me/photos", param, "POST", new fbRequestListener(), null); 
    } 

    public class fbRequestListener implements RequestListener { 

     @Override 
     public void onComplete(String response, Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+response); 

     } 

     @Override 
     public void onIOException(IOException e, Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+e); 

     } 

     @Override 
     public void onFileNotFoundException(FileNotFoundException e, 
       Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+e); 

     } 

     @Override 
     public void onMalformedURLException(MalformedURLException e, 
       Object state) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onFacebookError(FacebookError e, Object state) { 
      // TODO Auto-generated method stub 
      Log.d("RESPONSE",""+e); 

     } 

     } 
+0

{“error”:{“message”:“必须使用活动的访问令牌来查询有关当前用户的信息。”,“type”:“OAuthException”,“code”:2500} –

+0

传递附加参数:param。 putString(“access_token”,“您的访问令牌”); – Venky

+0

为什么在我已经登录时需要它?反正已经ACCESS_TOKEN –