获取 Facebook 页面的事件

Getting Facebook page's events

所以我需要使用图表 api 获取用户当前位置的 Facebook 事件。根据文档,用户的城市是具有“/events”边缘的页面 Facebook 对象。因此,我可以使用图表路径 /{page-id}/events 获取城市的事件,并且可能指定自和直到,但如果没有此字段,则应做文档而不是上周的结果。

Reading this endpoint returns an array of Event objects with the same fields as that node.

By default this will only return events within the last two weeks, use until or since parameters to modify this range.

API 表示请求:

new Request(
session,
"/{page-id}/events",
null,
HttpMethod.GET,
new Request.Callback() {
    public void onCompleted(Response response) {
        /* handle the result */
    }
}
).executeAsync();

将 return 页面的事件。

好的。我使用 Facebook 登录应用程序,而不是在这段代码中:

public class FacebookActivity extends AbsActivity {

private static final String TAG = "YeedFacebookActivity";

private JSONObject location;
private JSONArray pageEvents, searchedEvents;

//this is executed in onCreate
protected void initializeFields() {
    super.initializeFields();
    ArrayList<String> permissions = new ArrayList<>(5);
    permissions.add("email");
    permissions.add("user_friends");
    permissions.add("user_location");
    permissions.add("user_events");

    final Bundle parameters = new Bundle(1);
    parameters.putString("fields", "location");

    Session.openActiveSession(this, true, permissions, new Session.StatusCallback() {
        @Override
        public void call(final Session session, SessionState sessionState, Exception e) {
            if (sessionState.isOpened()) {
                new Request(session, "/me", parameters, HttpMethod.GET, new Request.Callback() {
                    @Override
                    public void onCompleted(Response response) {
                        location = (JSONObject) response.getGraphObject().getProperty("location");
                        String cityId = "";
                        String cityName = "";
                        try {
                            cityId = location.getString("id");
                            cityName = location.getString("name");
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                        //Requesting page events
                        new Request(session, cityId + "/events", null, HttpMethod.GET, new Request.Callback() {
                            @Override
                            public void onCompleted(Response response) {
                                Log.i(TAG, "PAGE\n" + response.toString());
                                pageEvents = (JSONArray) response.getGraphObject().getProperty("data");
                                Log.i(TAG, "PAGE\n" + pageEvents.toString());
                            }
                        }).executeAsync();
                        //Search by city name
                        Bundle searchParams = new Bundle(2);
                        searchParams.putString("q", cityName);
                        searchParams.putString("type", "event");
                        new Request(session, "/search", searchParams, HttpMethod.GET, new Request.Callback() {
                            @Override
                            public void onCompleted(Response response) {
                                Log.i(TAG, "SEARCH\n" + response.toString());
                                searchedEvents = (JSONArray) response.getGraphObject().getProperty("data");
                                Log.i(TAG, "SEARCH\n" + searchedEvents.toString());
                            }
                        }).executeAsync();
                    }
                }).executeAsync();
            }
        }
    });
}
}

用于检索用户所在城市的外部请求。第一个内部请求 returns 空数据,第二个内部请求 returns 关于城市事件的正常数据,但它们没有按时间排序,我不需要所有这些事件,只需要开始几周后,但是在客户端对它们进行排序然后过滤是完全糟糕的解决方案。

所以我的问题是为什么数据是空的?我能以某种方式增强搜索请求吗?

没有自动聚合事件并将其分配到位置页面。页面事件必须由页面自己显式创建。这就是您看不到任何结果的原因。