2015-10-16 139 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(); 

希望這有助於...