0

グラフからユーザーとその友人のスコアを取得しようとしていますが、エラーが発生しました。「ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。」実行時。

JSONArray responseJSONArray = new JSONArray(response);

私は必要なすべての許可を持っています。以下を使用して、スコアをグラフに投稿することに成功しました。

fbParams.putString("score", "" + 555);
    Request postScoreRequest = new Request(Session.getActiveSession(),
            "me/scores",
            fbParams,
            HttpMethod.POST,
            new Request.Callback() {
...
...

スコアを取得しようとすると。このパターンを使用しているブラウザからでも

https://graph.facebook.com/{userid}/scores?access_token={app_access_token}

私は得た

{"data":[{"user":{"name":"MYUSERNAME","id":"MIID"},"score":555,"application":{"name":"Tomato Smasher","namespace":"tomatosmasher","id":"354552234651550"}}]}

アクセスコードは https://developers.facebook.com/tools/explorerから取得しました

ただし、Android アプリでは次を使用します。

Session.getActiveSession().getAccessToken();


// Execute the HTTP Get to our server for the scores of the user's friends
                HttpClient client = new DefaultHttpClient();
                String getURL = "https://graph.facebook.com/" + currentUserFBID + "/scores?access_token=" + currentUserAccessToken;
                HttpGet get = new HttpGet(getURL);
                HttpResponse responseGet = client.execute(get);
                System.out.println("ALL GOOD2");
                // Parse the response
                HttpEntity responseEntity = responseGet.getEntity();
                String response = EntityUtils.toString(responseEntity);
                System.out.println("ALL GOOD3");
                if (!response.equals(null)) {
                    System.out.println("ALL GOOD4");
                    System.out.println(response);
                    JSONArray responseJSONArray = new JSONArray(response);  // <----------------got EXEPTION HERE
                    System.out.println("ALL GOOD4.5");
4

1 に答える 1

2

このコードを使用して、facebook 3.0 を使用して友達のスコアにアクセスできます。

String fqlQuery = "SELECT 値 FROM スコア WHERE user_id = "+"Enter_User_Id_Here"+" AND app_id = "+"ここにアプリ ID を入力";

            Bundle params = new Bundle();
            params.putString("q", fqlQuery);
            Session session = Session.getActiveSession();

            Request request = new Request(session,
                    "/fql",                         
                    params,                         
                    HttpMethod.GET,                 
                    new Request.Callback(){       
                public void onCompleted(Response response) {
                    Log.i("Result: ",response.toString());

                    try{
                        GraphObject graphObject = response.getGraphObject();
                        JSONObject jsonObject = graphObject.getInnerJSONObject();

                        JSONArray array = jsonObject.getJSONArray("data");

                            JSONObject data = array.getJSONObject(0);
                            Score = data.getString("value");



                    }catch(JSONException e){
                        e.printStackTrace();
                    }
                }                  
            }); 
            Request.executeBatchAsync(request); 
于 2013-07-10T06:02:28.517 に答える