2014-03-26 20 views
0

我從我的應用程序是上傳視頻,並得到上傳我已經做到了視頻信息(喜歡,評論)圖形API的Android拋出錯誤代碼2500

問題1

但是當我獲得視頻信息,它會引發我錯誤

錯誤

{"error":{"message":"Cannot specify type in both the path and query parameter.","type":"OAuthException","code":2500}} 

我使用的Facebook SDK 3.8

問題2 當我上傳視頻,只在我的帳戶中可見,但來自其他帳戶不可見的,即使它是公共

代碼上傳視頻

private void Upload_Video() { 

     mDialog = new ProgressDialog(AndroidFacebookConnectActivity.this); 
     mDialog.setMessage("Uploding video..."); 
     mDialog.show(); 

     String path="/mnt/sdcard/abc/Mirror.mp4"; 

     if (new File(path).exists()) { 
      try { 
       Bundle param; 
       try { 
        InputStream is = new FileInputStream(path); 
        byte[] data = readBytes(is); 
        param = new Bundle(); 
        param.putString("title", "Test 2"); 
        param.putString("message", "uploaded"); 
        param.putByteArray("video.mov", data); 
        param.putString("contentType", "video/quicktime"); 
        mAsyncRunner.request("kmavadhiya/videos", param, "POST",new FBRequestListener(), null); 

        Toast.makeText(getApplicationContext(), "Uploading...", Toast.LENGTH_SHORT).show(); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } else { 
      Toast.makeText(getApplicationContext(), "No videos found in sdcard ",Toast.LENGTH_SHORT).show(); 
     } 
} 

public byte[] readBytes(InputStream inputStream) throws IOException { 

     // This dynamically extends to take the bytes you read. 
     ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); 

     // This is storage overwritten on each iteration with bytes. 
     int bufferSize = 1024; 
     byte[] buffer = new byte[bufferSize]; 

     // We need to know how may bytes were read to write them to the byteBuffer. 
     int len = 0; 
     while ((len = inputStream.read(buffer)) != -1) { 
      byteBuffer.write(buffer, 0, len); 
     } 

     // And then we can return your byte array. 
     return byteBuffer.toByteArray(); 
    } 

上傳請求聽者

public class FBRequestListener implements RequestListener { 

     @Override 
     public void onComplete(String response, Object state) { 

      runOnUiThread(new Runnable() { 
       public void run() { 
        Toast.makeText(AndroidFacebookConnectActivity.this, "Upload Video Successfully...",Toast.LENGTH_LONG).show(); 
        mDialog.dismiss(); 
       } 
      }); 
      Log.e("response", response); 

      try { 
       JSONObject jObject = new JSONObject(response); 
       String Id = (String) jObject.get("id"); 
       Log.d("Video Id = ",""+Id); 

       Bundle param = new Bundle(); 
       param.putString("type", "uploaded"); 

       mAsyncRunner.request("kmavadhiya/videos/"+Id, param, "GET",new VideoDataRequestListener(), null); 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 

     @Override 
     public void onIOException(IOException e, Object state) { 
      e.printStackTrace(); 
     } 

     @Override 
     public void onFileNotFoundException(FileNotFoundException e, 
       Object state) { 
      Log.e("", "onFileNotFoundException"); 
      e.printStackTrace(); 

     } 

     @Override 
     public void onMalformedURLException(MalformedURLException e, 
       Object state) { 
      Log.e("", "onMalformedURLException"); 
      e.printStackTrace(); 
     } 

     @Override 
     public void onFacebookError(FacebookError e, Object state) { 
      Log.e("", "onFacebookError"); 
      e.printStackTrace(); 

     } 

    } 

視頻數據聽者

public class VideoDataRequestListener implements RequestListener { 

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

     } 

     @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 onMalformedURLException(MalformedURLException e, 
       Object state) { 
      // TODO Auto-generated method stub 

     } 

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

     } 

    } 

如果我改變了這行

mAsyncRunner.request("kmavadhiya/videos/"+Id, param, "GET",new VideoDataRequestListener(), null); 

隨着

mAsyncRunner.request("kmavadhiya/videos/", param, "GET",new VideoDataRequestListener(), null); 

**我無表情的反應**

參考 Link 1

Graph Api Reference Link

回答

0

我忘了請求允許在登錄時,所以它的驗證錯誤

添加這登錄點擊

Session session = Session.getActiveSession(); 
     if (!session.isOpened() && !session.isClosed()) { 
      session.openForRead(new Session.OpenRequest(this) 
      .setPermissions(Arrays.asList("basic_info","user_about_me","email","video_upload","user_videos")) // Permission List That You Want To Get 
      .setCallback(statusCallback)); 

     } else { 
      Session.openActiveSession(this, true, statusCallback); 
     } 

參考

權限列表

https://developers.facebook.com/docs/facebook-login/access-tokens/

設置權限參考

https://developers.facebook.com/docs/android/login-with-facebook#permissions