これが私の問題です。
FQL クエリを作成し、応答データを保存しています。私のコードは正常に動作しますが、アプリを実行してから約 4 分後に JSONException が発生します。例外は読み取ります
A JSONArray text must start with '[' at character 0 of
URLを入力すると、クエリがブラウザに作成されるため、これは奇妙です。次のようになります
[{"uid":SOMENUMBER},{"uid":SOMENUMBER}]
これは明らかに「[」文字で始まります。
リクエストはこちら
String query = "SELECT uid FROM user WHERE is_app_user=1 and uid IN (SELECT uid2 FROM friend WHERE uid1 =" + fbId + ")";
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", query);
mAsyncFacebookRunner.request(null, params, new FQLRequestListener());
これがリクエストリスナーです
private class FQLRequestListener implements RequestListener
{
@Override
public void onComplete(String response, Object state)
{
try {
JSONArray json = new JSONArray(response);
friendsIds = new ArrayList<String>();
for(int i = 0; i < json.length(); ++i)
{
String uid = json.getJSONObject(i).getString("uid");
friendsIds.add(uid);
Log.d("friends", friendsIds.get(i));
}
InviteFriends.this.runOnUiThread(new Runnable()
{
@Override
public void run()
{
setUpList();
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
そして、スタック..
06-15 16:43:21.744: D/Facebook-Util(866): GET URL: THIS IS THE URL THAT WORKS IN A BROSWER (actual URL removed)
06-15 16:43:21.774: W/System.err(866): org.json.JSONException: A JSONArray text must start with '[' at character 0 of
06-15 16:43:21.774: W/System.err(866): at org.json.JSONTokener.syntaxError(JSONTokener.java:448)
06-15 16:43:21.774: W/System.err(866): at org.json.JSONArray.<init>(JSONArray.java:104)
06-15 16:43:21.774: W/System.err(866): at org.json.JSONArray.<init>(JSONArray.java:150)
06-15 16:43:21.774: W/System.err(866): at rageup.android.InviteFriends$FQLRequestListener.onComplete(InviteFriends.java:129)
06-15 16:43:21.774: W/System.err(866): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:254)
私はそれに注意する必要があります..
ログアウトして再度ログインすると、クエリが機能します。
Facebook セッションが有効であることを確認しました。
Facebook が提供する「Hackbook」の例では、友達のリストをダウンロードするときに同じ問題が発生します。
例外取得の流れ
ユーザーがログインするホームページ
ユーザーがボタンをクリックして 2 番目のアクティビティを開始する
2 番目のアクティビティは、クエリが作成される場所です
帰宅
ログインを除いて、約 4 分後に繰り返します