2

facebook android SDK( http://github.com/facebook/facebook-android-sdk )を使用してandroidアプリケーションを作成しようとしています。このSDKを使用してFQLを使用できるかどうかを調べています。誰かがこの点で何か経験があれば、私に知らせてください。

FQLはhttps://api.facebook.com/method/fql.query?query=QUERYを使用して使用できるようですが、facebookandroidSDKはこれをサポートしていないようです。

ありがとう;

4

4 に答える 4

8

これはおそらく、言及されているよりも優れた方法です。現在のバージョンの API を使用すると、手動でアクセス トークンを追加したり、Util.openURL を使用したりする必要はありません。

        Bundle params = new Bundle();
        params.putString("method", "fql.query");
        params.putString("query", "SELECT name, uid, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) ORDER BY name");
        String response = $fb.request(params);
        response = "{\"data\":" + response + "}";

        JSONObject json = Util.parseJson( response );
        JSONArray data = json.getJSONArray( "data" );

        for ( int i = 0, size = data.length(); i < size; i++ ){
            JSONObject friend = data.getJSONObject( i );

            String id = friend.getString( "uid" );
            String name = friend.getString( "name" );
            ...
        }
于 2011-04-15T01:10:36.793 に答える
2

提案されたパッチを使用したサンプルコードは次のとおりです。

    Bundle b = new Bundle();
    b.putString("access_token", facebookManager.mFacebook.getAccessToken());
    b.putString("query", "SELECT name FROM user WHERE uid = me()");

    try {
        String myResult = Util.openUrl("https://api.facebook.com/method/fql.query", "GET", b);
            Log.i("MyResult", myResult);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
于 2010-11-05T12:38:20.977 に答える
1

これが私の解決策です:

あなたが本当にする必要があるのは、を使用することgraphPathRequestです。Android SDK 内では、2 つのバージョンが既に提供されており、1 つはクイック実行メソッドです。もう 1 つは、そのような要求オブジェクトで execute を呼び出す前に、要求を作成してその要求を変更することです。私の方法はそれ以降のバージョンを使用します。

内にいる場合は、次FacebookActivityのように呼び出します。

Request r = new Request.newGraphPathRequest(getSession(), "fql", 
    new Request.Callback() {
        @Override
        public void onCompleted(Response response) {
           // your FQL result will be stored in response.getGraphObject()
           Log.d("result", response.toString());
        }
    }
);
r.getParameters().putString("q", YOUR_QUERY_HERE);
r.executeAsync();

お役に立てれば。

私は AndroidSDK 3.0 を使用していることに注意してください

于 2013-01-27T08:04:38.990 に答える
0

Android Facebook SDKは、古いRESTAPIのパラメーターをURLエンコードしていないようです。したがって、大きなFQLクエリを送信すると、すべてのスペースと特殊文字を処理できなくなります。おそらくこれを修正するフォークをgithubに配置しますが、それまでの間、com.facebook.android.Utilの26行目を次のように変更できます。

sb.append(key + "=" + URLEncoder.encode(parameters.getString(key)));

そこでURLEncoderが呼び出されていることに注意してください。これは実際には非推奨のバージョンのメソッドですが、今のところ正常に機能します。githubにプッシュするときに正しいメソッドを含めます。

于 2010-10-25T15:26:39.900 に答える