2012-12-24 24 views
2

我正在使用Facebook Android開發人員Hackbook示例,我想知道如何獲得Facebook朋友即將生日,如:今天打開27,在10天內打開28天等等使用GraphAPIFQL如何獲取Facebook朋友即將生日使用Hackbook示例

public class graphApiRequestListener extends BaseRequestListener { 

    @Override 
    public void onComplete(final String response, final Object state) { 
     dialog.dismiss(); 
     // access token is appended by Facebook object, hence params are 
     // added here after request is complete 
     if (!params.isEmpty()) { 
      url += "?" + Util.encodeUrl(params); // Params 
     } 
     metadataObject = null; 
     params.clear(); 
     try { 
      JSONObject json = Util.parseJson(response); 
      if (json.has("metadata")) { 
       metadataObject = json.getJSONObject("metadata"); 
       json.remove("metadata"); 
      } else { 
       metadataObject = null; 
      } 
      setText(json.toString(2)); 
     } catch (JSONException e) { 
      setText(e.getMessage()); 
      e.printStackTrace(); 
     } catch (FacebookError e) { 
      setText(e.getMessage()); 
      e.printStackTrace(); 
     } 
    } 
+2

@Arpit感謝... –

+0

http://stackoverflow.com/questions/8004345/using-fql -to-retri即將到來的生日 - 從facebook-api –

+0

http://stackoverflow.com/questions/10372190/next-birthdays-with-fql-fbook –

回答

5

這裏使用Facebook的老SDK一些代碼試試這個

Facebook fb = new Facebook(main.APP_ID); 
    SessionStore.restore(fb, mActivity); 
    mAsyncRunner = new AsyncFacebookRunner(fb); 

    String graphPath = "me/friends"; 
    Bundle bundle_friends = new Bundle(); 
    bundle_friends.putString("fields", "id,birthday"); 

    mAsyncRunner.paramsRequest(graphPath, bundle_friends, new AsyncRequestListener(mActivity) { 

     @Override 
     public void onComplete(JSONObject obj, Object state) { 

      try { 
       JSONArray data = obj.getJSONArray("data"); 
       for (int i = 0; i < data.length(); i++) { 
        JSONObject temp = data.getJSONObject(i); 
        if (!temp.isNull("birthday")) 
         bundleForBirthdays.putString(temp.getString("id"), temp.getString("birthday")); 
       } 


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

     } 
    }); 
+0

爲了達到這個目的,你需要首先根據最近的生日列表排序第一個元素。然後使用「鬧鐘管理器」設置即將到來的生日提醒。 –

+0

檢查'json'是否包含'metadata'或者'data',並且您沒有提及您面臨的錯誤。 –