Facebook - 通过位置名称获取位置/地点 ID
Posted
技术标签:
【中文标题】Facebook - 通过位置名称获取位置/地点 ID【英文标题】:Facebook - obtain location /places ID via location name 【发布时间】:2011-03-18 20:39:37 【问题描述】:我可以通过带有位置 ID 的图形 API 发送查询来返回位置的详细信息,但是我希望实现相反的效果 - 通过发送包含位置名称(城市、状态等)。这可能吗?
【问题讨论】:
【参考方案1】:这可以通过几种不同的方法实现。您可以使用 long / lat 位置进行搜索,并将地名放入查询中。此搜索将仅搜索地点。
执行以下操作
https://graph.facebook.com/search?q=ritual&type=place¢er=37.76,-122.427&distance=1000&access_token=mytoken.
这将返回仪式咖啡。
另一种方法是使用以下方法搜索 facebook 页面 https://graph.facebook.com/search?q=ritual%20coffee&type=page&access_token=mytoken
这种方式比较困难,因为您显然需要更详细地解析列表。
【讨论】:
我找不到该端点的文档参考。这个解决方案是某种黑匣子吗?【参考方案2】:您也可以使用来自 facebook 的 place sdk:
compile group: 'com.facebook.android', name: 'facebook-places', version: '4.30.0' // For latest version, see https://developers.facebook.com/docs/android/
然后:
PlaceSearchRequestParams.Builder builder = new PlaceSearchRequestParams.Builder();
builder.setSearchText("Cafe");
builder.setDistance(1000); // 1,000 meter maximum distance.
builder.setLimit(10);
builder.addField(PlaceFields.ID);
GraphRequest request = PlaceManager.newPlaceSearchRequestForLocation(builder.build());
request.setCallback(new GraphRequest.Callback()
@Override
public void onCompleted(GraphResponse response)
// Handle the response. The returned ID in JSON is the placeId.
request.executeAsync();
【讨论】:
更多信息在这里:developers.facebook.com/docs/places/android/search【参考方案3】:如果我正确理解您的问题,您可以使用 fql: https://api.facebook.com/method/fql.query?query=QUERY where 查询应该是这样的: 从 name = 的地方选择 page_id ;
这里有一个页面供您参考: http://developers.facebook.com/docs/reference/fql/place/
【讨论】:
你也可以使用php sdk或者JS sdk达到同样的效果。 感谢埃拉德的回答。不幸的是,这不是一个可行的解决方案 - 我收到此错误:“您的语句不可索引。WHERE 子句必须包含可索引列。这些列在从developers.facebook.com/docs/reference/fql 链接的表中标有 *”。查看您链接到的 FQL Place 页面,看来 page_id 是唯一的索引列:( 那么我想在 facebook 架构中没有解决方案。从理论上讲,您可以通过从位置表中选择 * 从 1 到其他任何值来创建自己的数据库,但这似乎是一个糟糕的解决方案。以上是关于Facebook - 通过位置名称获取位置/地点 ID的主要内容,如果未能解决你的问题,请参考以下文章