2012-12-03 45 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