Facebook - obtain location /places ID via location name
Asked Answered
E

3

18

I'm able to return a location's details by sending a query via the graph api with the location's ID, however I'm looking to achieve the reverse - effectively find location id by sending a request containing the location name (city, state etc). Is this possible?

Excision answered 18/3, 2011 at 20:39 Comment(0)
P
16

This is possible under a few different approaches. You can either search using long / lat positions and put the place name into the query. This search will search places only.

Do the following

https://graph.facebook.com/search?q=ritual&type=place&center=37.76,-122.427&distance=1000&access_token=mytoken.

This will return ritual coffee.

Another way is to search through facebook pages using the following https://graph.facebook.com/search?q=ritual%20coffee&type=page&access_token=mytoken

This way is more difficult as you will obviously need to parse the list in more detail.

Prow answered 31/3, 2011 at 15:20 Comment(2)
I can't find the document reference for that endpoint. Is this solution some kind of a black box?Cameroun
(#12) Place Search API is deprecated for third parties effective v8.0 is deprecated what type of access token can we use if the endpoint still exists ?Thoraco
B
0

You also can use the place sdk from facebook:

compile group: 'com.facebook.android', name: 'facebook-places', version: '4.30.0' // For latest version, see https://developers.facebook.com/docs/android/

and then:

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();
Blowfish answered 26/1, 2018 at 10:28 Comment(1)
More info here: developers.facebook.com/docs/places/android/searchArlin
P
-1

If I understand your question correctly you can use fql: https://api.facebook.com/method/fql.query?query=QUERY where query should be something like this: select page_id from place where name = ;

Here is a page for your refrence: http://developers.facebook.com/docs/reference/fql/place/

Perversity answered 27/3, 2011 at 16:41 Comment(3)
You can also use php sdk or JS sdk to same effect.Perversity
Thanks for the answer Elad. Unfortunately though, it's not a working solution - I receive this error: "Your statement is not indexable. The WHERE clause must contain an indexable column. Such columns are marked with * in the tables linked from developers.facebook.com/docs/reference/fql". Looking at the FQL Place page you linked to, it appears page_id is the only indexed column :(Excision
Well then I guess there is no solution for this within the facebook architecture. Theoreticlly, you could create your own database by selecting * from the places table from 1 to whatever, but that seems like a bad solution.Perversity

© 2022 - 2024 — McMap. All rights reserved.