2

私は自分のアプリケーションで故郷の場所とすべての友達の現在の場所を取得しようとしています。場所を取得するには、権限を設定してFQLを作成する必要があることがわかりました。私はそれを書き、URLは My Graph API形式
になりまし たが、このリンクを使用してjsonを取得すると、値が取得されません。%20をスペースに置き換えてみましたが、それでもうまくいきました。何が悪かったのか教えてください。使用するURLを教えてください。

json値を取得するための私のコード..:

String q = "https://developers.facebook.com/tools/explorer?fql=SELECT name, uid, current_location, hometown_location FROM user WHERE uid in (SELECT uid2 FROM friend WHERE uid1 = me())";
              HttpClient httpClient = new DefaultHttpClient();
              HttpGet httpGet = new HttpGet(q);
              try {
                    HttpEntity httpEntity = httpClient.execute(httpGet).getEntity();
                    if (httpEntity != null){
                        InputStream inputStream = httpEntity.getContent();
                        Reader in = new InputStreamReader(inputStream);
                        BufferedReader bufferedreader = new BufferedReader(in);
                        StringBuilder stringBuilder = new StringBuilder();

                        String stringReadLine = null;

                        while ((stringReadLine = bufferedreader.readLine()) != null) {
                         stringBuilder.append(stringReadLine + "\n");
                         }

                        qResult = stringBuilder.toString();
                        inputStream.close();
                       }
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
              try {
                 Log.e("in try block", "in try block");
                JSONObject JsonObject = new JSONObject(qResult);
                JSONArray JsonArray = JsonObject.getJSONArray("data");
                for(int i = 0;i < JsonArray.length(); i++){
                    Log.e("jksdhkvjsdlvm", "inside 1st for loop");
                    JSONObject fbInfo = JsonArray.getJSONObject(i);
                    name = fbInfo.getString("name");
                    uid = fbInfo.getString("uid");
                    current_location = JsonObject.getJSONArray("current_location");
                    for(int j = 0;j < current_location.length(); j++){
                        JSONObject currentInfo = current_location.getJSONObject(j);
                        c_city = currentInfo.getString("city");
                        c_state = currentInfo.getString("state");
                        c_country = currentInfo.getString("country");
                        Log.e("--->>>>", c_city);
                    }
                    hometown_location = JsonObject.getJSONArray("hometown_location");
                    for(int k = 0;k < hometown_location.length(); k++){
                        JSONObject homeInfo = hometown_location.getJSONObject(k);
                        h_city = homeInfo.getString("city");
                        h_state = homeInfo.getString("state");
                        h_country = homeInfo.getString("country");
                    }
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
4

2 に答える 2

0

%20 をスペースで置き換えてみましたが、それでもうまくいきました。

値の URL エンコードは、単にスペースを置き換えるだけではありません。%xy 表現に置き換えたい他の文字もあります。たとえば、カンマです。

FQL クエリ全体を正しい方法でURL エンコードすると、次のように機能します。

https://developers.facebook.com/tools/explorer?fql=SELECT+name%2C+uid%2C+current_location%2C+hometown_location+FROM+user+WHERE+uid+in+%28SELECT+uid2+FROM+friend+ WHERE+uid1+%3D+me%28%29%29

于 2012-09-22T12:35:54.550 に答える
0

Graph API を使用して簡単に行うこともできます。

1) アクセス権付きの access_token が必要です。

To read Posts with location information, you need:
    user_photos or friends_photos for Photos
    user_status or friends_status for Posts (not including Photos)
    user_checkins or friends_checkins for Checkins only (excluding all other types of Posts)

2)次にこれを呼び出します

https://graph.facebook.com/search?type=checkin&access_token=

これは、私 (認証されたユーザー) + 友達の location_tagged アイテムを返します

于 2012-09-22T20:07:32.300 に答える