2015-10-16 69 views
-1

我试图运行一个查询来搜索使用搜索查询facebok graf api for android的位置。如何正确使用Facebook图形API(android)的搜索查询?

如果我尝试在Graph API Explorer中运行此查询,我得到this result

但编程上它是不可能的。我尽量让这样:

new GraphRequest(AccessToken.getCurrentAccessToken(),"https://stackoverflow.com/search?q=coffee&type=place&center=37.76,-122.427",null,HttpMethod.GET,new GraphRequest.Callback() 
    { 
     public void onCompleted(GraphResponse response) 
     { 
      Log.v("HelloFacebook", response.toString()); 
     } 
    }).executeAsync(); 
} 

我得到什么(PARAM距离必须是数字)

,如果我尝试无距离我太不算什么,但(需要另一条信息的访问令牌来请求该国土资源也可以)

可能是什么问题?

回答

3

在Facebook的图形API搜索正确的语法:

GraphRequest request = GraphRequest.newGraphPathRequest(
    accessToken, 
    "/search", 
    new GraphRequest.Callback() { 
    @Override 
    public void onCompleted(GraphResponse response) { 
     // Insert your code here 
    } 
}); 

Bundle parameters = new Bundle(); 
parameters.putString("type", "place"); 
parameters.putString("center", "53,27"); 
parameters.putString("distance", "30000"); 
request.setParameters(parameters); 
request.executeAsync(); 
1

是瓦迪姆Korzun提供并不幸的是没有直接对我工作的语法。但它给了我一些想法。我想通过名字寻找人。下面的代码我根据newPlacesSearchRequest(...) - 方法正式GraphRequest -class的impelemted:

AccessToken accessToken = AccessToken.getCurrentAccessToken(); 

    Bundle parameters = new Bundle(2); 
    parameters.putString("type", "user"); 
    parameters.putString("q", "Albert Einstein"); 

    GraphRequest.Callback wrapper = new GraphRequest.Callback() { 
     @Override 
     public void onCompleted(GraphResponse response) { 
      try { 
       JSONObject jso = response.getJSONObject(); 
       JSONArray arr = jso.getJSONArray("data"); 

       for (int i = 0; i < (arr.length()); i++) { 
        JSONObject json_obj = arr.getJSONObject(i); 

        // START: Your code goes here 
        String id = json_obj.getString("id"); 
        String name = json_obj.getString("name"); 
        // ... 
        // END: Your code goes here 
       } 
      } catch (JSONException e) { 
       Log.e("name: ", e.getMessage()); 
      } 
     } 
    }; 

    GraphRequest gr = new GraphRequest(accessToken, "search", parameters, HttpMethod.GET, wrapper); 
    gr.executeAsync(); 

希望这有助于...