2012-12-03 48 views
1

我有已經在Facebook上創建了一個活動的代碼。我也想邀請朋友。經過這麼多研究後,我在Facebook開發者網站上發現了一些編碼。它說:android - 邀請朋友在Facebook上創建活動

您可以通過向/ EVENT_ID/invite/USER_ID發出HTTP POST來邀請用戶參加活動。您可以通過向/ EVENT_ID/invite?users = USER_ID1,USER_ID2,USER_ID3發出HTTP POST來邀請多個用戶。這兩個都需要create_event權限,如果邀請成功,則返回true。

請告訴我如何使用此編碼邀請朋友。

非常感謝!

回答

0

予先得到的響應爲JSON響應,那麼我在散列陣列和輸入所選擇的朋友ID的結果存儲到數組象下面這樣:

private void inviteFriends() 
    { 
     try 
     { 
      Bundle params = new Bundle(); 
      mAsyncRunner2.request("me/friends" , params , "GET", new RequestListener() 
      { 

       @Override 
       public void onMalformedURLException(MalformedURLException e, Object state) 
       { 

       } 

       @Override 
       public void onIOException(IOException e, Object state) 
       { 

       } 

       @Override 
       public void onFileNotFoundException(FileNotFoundException e, Object state) 
       { 

       } 

       @Override 
       public void onFacebookError(FacebookError e, Object state) 
       { 

       } 

       @Override 
       public void onComplete(String response, Object state) 
       { 
        try 
        { 
         JSONObject responseJsonObject = new JSONObject(response); 
         Log.d("InviteFriends.inviteFriends().new RequestListener() {...}:onComplete", "FB Response =>"+ responseJsonObject); 
         //event_id = event.getString("id"); 


         //JSONObject responseJsonObject = new JSONObject(eventResponse); 
         JSONArray jsonArray = responseJsonObject.getJSONArray("data"); 


         for (int i = 0; i < jsonArray.length(); i++) 
         { 
          HashMap<String, String> map = new HashMap<String, String>(); 
          JSONObject e = jsonArray.getJSONObject(i); 

          map.put("id", e.getString("id")); 
          map.put("name", e.getString("name")); 
          mylist.add(map); 

          userIds = e.getString("id"); 
          userName = e.getString("name"); 
          Log.d("MainActivity:getAllEvents", "Friend ID, Name:" + userIds + "," + userName); 

         } 
        } 
        catch (Exception e) 
        { 
         Log.e("log_tag", "Error parsing data "+e.toString()); 
        } 

        runOnUiThread(new Runnable() { 
         public void run(){ 

          ListAdapter adapter = new SimpleAdapter(getApplicationContext(), mylist , R.layout.friends_main, 
           new String[] {"name" }, 
           new int[] {R.id.item_title}); 

          Log.d(
           "InviteFriends.inviteFriends().new RequestListener() {...}.onComplete(...).new Runnable() {...}:run", 
           "Friends->" + mylist.size()); 

          setListAdapter(adapter); 

          final ListView lv = getListView(); 
          lv.setTextFilterEnabled(true); 
          lv.setOnItemClickListener(new OnItemClickListener() { 
           public void onItemClick(final AdapterView<?> parent, View view, int position, long id) { 
            @SuppressWarnings("unchecked") 
            HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position); 
            String selectedName = o.get("name"); 
            String selectedId = o.get("id"); 
            Toast.makeText(InviteFriends.this, "Your friend " + selectedName + " was selected.", Toast.LENGTH_SHORT).show(); 

            selectedFriendsIDs.add(selectedId); 
            selectedFriendsNames.add(selectedName); 
            selectedFriendsCount = selectedFriendsIDs.size(); 

            btnSendInvites.setText(selectedFriendsCount + " friends selected"); 

            Log.d("Selected IDs ", "" + selectedFriendsIDs); 
            Log.d("Selected Names ", "" + selectedFriendsNames); 


            //make list null 


           } 
          }); 
         } 
        }); 


       } 
      }, null); 


     } 
     catch (Exception e) 
     { 

     } 

然後我邀請朋友,一個接一個裏面的for循環如下:

public void inviteSelectedFriends() 
    { 
     try 
     { 



      String createdEventID = CreateFbEvent.eventID.toString(); 


      Log.d("InviteSelectedFriends:inviteSelectedFriends", "size -> " + InviteFriends.selectedFriendsIDs.size()); 

      for(int i = 0; i < selectedFriendsIDs.size(); i++){ 


      String inputParm = createdEventID + "/invited/" + selectedFriendsIDs.get(i); 
      Log.d("InviteSelectedFriends:inviteSelectedFriends", "inputParm"+inputParm); 
      Bundle params = new Bundle(); 
      mAsyncRunner2.request(inputParm, params, "POST", new RequestListener() 
      { 

       @Override 
       public void onMalformedURLException(MalformedURLException e, Object state) 
       { 

       } 

       public void onIOException1(IOException e, Object state) 
       { 

       } 

       @Override 
       public void onFileNotFoundException(FileNotFoundException e, Object state) 
       { 

       } 

       @Override 
       public void onFacebookError(FacebookError e, Object state) 
       { 

       } 

       @Override 
       public void onComplete(String response, Object state) 
       { 
        try 
        { 
         JSONObject eventResponse = new JSONObject(response); 
         //event_id = event.getString("id"); 
         Log.i(tag, "Event Response => " + eventResponse); 
         //Log.w("myapp", inputParm); 
         //Log.d("InviteSelectedFriends:inviteSelectedFriends", "INPUT PARAM->"+ inputParm.toString()); 

        } 
        catch (Exception e) 
        { 

        } 
       } 

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

       } 
      }, null); 
      } 
     } 
     catch (Exception e) 
     { 

     } 
    } 

希望這有助於!

0

隨着新的3.0 SDK,你可以使用以下:

String eventId = "EVENT_ID"; 
Bundle params = new Bundle(); 
params.putString("users", "USER_ID1,USER_ID2,USER_ID3"); 
Request inviteFriendsRequest = new Request(Session.getActiveSession(), 
    eventId + "/invited", 
    params, 
    HttpMethod.POST, 
    new Request.Callback() { 
     @Override 
     public void onCompleted(Response response) { 
      // Handle response 
     } 
    } 
); 
Request.executeAsync(inviteFriendsRequest); 

爲替事件ID和好友列表自己的值。

+0

謝謝你的答案.. – TharakaNirmana