所以我需要使用图形api为用户的当前位置获取Facebook事件。根据文档,用户的城市是页面Facebook对象,其中包含" / events"边缘。所以我可以使用图形路径/ {page-id} /事件来获取城市事件,也可以指定自从和直到,但是如果没有这样的情况则会记录文件,结果将是最后几周的结果。
读取此端点将返回一个Event对象数组,其字段与该节点相同。
默认情况下,这只会在过去两周内返回事件,使用直到或自参数修改此范围。
API说请求:
new Request(
session,
"/{page-id}/events",
null,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
/* handle the result */
}
}
).executeAsync();
将返回页面的活动。
好的,好的。我使用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();
}
}
});
}
}
用于检索用户城市的外部请求。第一个内部请求返回空数据,第二个内部请求返回有关城市事件的正常数据,但它们没有按时间排序,我不需要所有那些事件,只需要在几周内开始,但排序然后排序在客户端过滤它们完全是错误的解决方案。
所以我的问题是为什么数据是emty?我可以以某种方式提高搜索请求吗?
答案 0 :(得分:0)
没有自动聚合和事件分配到位置页面。页面事件必须由页面本身明确创建。这就是为什么你没有看到任何结果。