2013-04-12 93 views
0

下面是我的代碼,我在我的應用中整合了facebook。我試圖讓用戶在登錄後能夠在牆上張貼圖像。但是我一直未能在三天內完成。已經看到像this這樣的帖子,但我沒有得到任何數據(只是它導致空數據data[])。我甚至在維護會話方面也遇到麻煩。有人可以發佈工作代碼,或者至少可以在Facebook牆上張貼圖片的來源?希望我的下面的代碼很清晰,我的解釋清楚了我用下面的代碼嘗試過的內容。在用戶的Facebook牆上發佈一張照片

活動的onCreate(): - 華爾街

public class FacebookActivity extends BaseActivity { 
private static String APP_ID = "1303786178"; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fb_screen); 

     btnFbLogin = (Button) findViewById(R.id.fbloginbtn); 
     btnFbLogout = (Button) findViewById(R.id.fblogoutbtn); 
     btnPostToWall = (Button) findViewById(R.id.fbpostbtn); 
     msget = (EditText)findViewById(R.id.fbmsget); 
     mAsyncRunner = new AsyncFacebookRunner(facebook); 
     mHandler = new Handler(); 
     String passedpath = getIntent().getStringExtra("imagepath").toString(); 

     imageuri = Uri.parse(passedpath); 

     /** 
     * Login button Click event 
     * */ 
     btnFbLogin.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Log.d("Image Button", "button Clicked"); 
       loginToFacebook(); 
      } 
     }); 

     btnFbLogout.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Log.d("Image Button", "button Clicked"); 
       logoutFromFacebook(); 
      } 
     }); 


     /** 
     * Posting to Facebook Wall 
     * */ 
     btnPostToWall.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       //postToWall(imageuri); 

       getAlbumId(); 
      } 
     }); 


      } 

發佈包括我的兩個代碼的功能之一是getAlbumId(),另一種是posttowall()將從getAlbumId()被調用: -

public void getAlbumId() 
    { 

     dialog = ProgressDialog.show(FacebookActivity.this, "","Please Wait...", true, true); 

     //String wallAlbumID = null; 
     mAsyncRunner.request("me/albums", new BaseRequestListener(){ 

      @Override 
      public void onComplete(String response, Object state) { 
       // TODO Auto-generated method stub 
       try{ 
       Log.d("response in album"," "+response); 
       JSONObject json = Util.parseJson(response); 
       JSONArray albums = json.getJSONArray("data"); 
       for (int i =0; i < albums.length(); i++) { 
        JSONObject album = albums.getJSONObject(i); 
        if (album.getString("type").equalsIgnoreCase("wall")) { 
         final String wallAlbumID = album.getString("id"); 
         globalalbid = wallAlbumID; 
         Log.d("JSON", wallAlbumID); 
         break; 
        } 

       } 

       dialog.dismiss(); 
        mHandler.post(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(getApplicationContext(), "id: " + globalalbid, Toast.LENGTH_LONG).show(); 
          if(globalalbid != "") 
          postToWall(imageuri, globalalbid); 
         } 
        }); 

       }catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 

     }); 

      } 

功能張貼在牆上:

public void postToWall(Uri locuri, String wallid) { 

     if (facebook.isSessionValid()) { 
      Util.showAlert(this, "Warning", "You must first log in."); 
     } else { 
      dialog = ProgressDialog.show(FacebookActivity.this, "","Please Wait...", true, true); 


     // post on user's wall. 
     Uri photoUri = locuri; 
     if (photoUri != null) { 
      Bundle params = new Bundle(); 
      try { 
       params.putByteArray("photo", 
         Utility.scaleImage(getApplicationContext(), photoUri)); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      String imagecaption = msget.getText().toString(); 
      if(imagecaption != "") 
      params.putString("caption", imagecaption); 
      mAsyncRunner.request(wallid+"/photos", params, "POST", new PhotoUploadListener(), null); 
     } else { 
      Toast.makeText(getApplicationContext(), 
        "Error from the pic", Toast.LENGTH_SHORT) 
        .show(); 
     } 
     } 
    } 


} 

我總是得到專輯id爲空。我試圖獲取專輯ID的方式有什麼問題嗎?因爲我在某些帖子中看到了那些試圖訪問相冊ID然後在相冊中發佈圖片的人。他們似乎在專輯名稱中保留了常見的查找方式。如果是這樣,一些新的包含時間軸照片名稱,那麼我們如何找到相冊ID。請建議。

注意:我希望圖像可以在牆上顯示,而不是隻顯示相冊。

回答

0

改爲將照片上傳到用戶的相冊,而不是將照片發佈到/me/feed。確保您要求用戶提供publish_stream權限。這會將照片直接上傳到用戶的牆上,而不是轉到相冊。

相關問題