2

我正在使用 Facebook Android Developers Hackbook 示例,我想知道如何获取 Facebook 好友即将到来的生日,例如:今天 27 岁,10 天后 28 岁等等,使用GraphAPIFQL

  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();
        }
    }
4

1 回答 1

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();
            }

        }
    });
于 2012-12-24T06:12:44.267 回答