1

簡単なことをしてFacebookと通信しようとしています。現時点では、ユーザーをログインして、自分のウォールに投稿できます。しかし、何らかの理由で、名前などの公開情報にアクセスできないようです。私は一貫してこのエラーを受け取ります:

{"error":{"message":"構文エラー \"文字 4 の \"?\".\" の代わりに文字列の末尾が必要: name?access_token=MYACCESSTOKEN","type":"OAuthException","code ":2500}}

呼び出しは次のとおりです。

SampleRequestListener srl = new SampleRequestListener();
AsyncFacebookRunner afr = new AsyncFacebookRunner(facebook);
afr.request("http://graph.facebook.com/me?fields=name", (RequestListener)srl);

その呼び出しは、検証済みのセッション内 (.Authorize の DialogListener の onComplete 部分) で行われます。私の access_token と上記とまったく同じ文字列を使用して、http://developers.facebook.com/tools/explorer/でリクエストを正常に機能させることができます

RequestListener.onComplete で応答を解析しているときにエラーが発生します

JSONObject json = Util.parseJson(response);
final String name = json.getString("name");
System.out.println("Hi, my name is " + name);

お時間をいただきありがとうございます。すべての入力を歓迎します。

アップデート *

2 つのことが起こっています。Facebook API では、Util.openUrl に「?」が追加されていました。フィールド名とaccess_tokenの間(以下の回答が指摘しているように)。これは奇妙に思えます。APIの古いバージョンか何かを引っ張ったのだろうか。あなたはそれが正しく設定されると思うでしょう。

また、メソッドを間違って呼び出しました: これ:

afr.request("http://graph.facebook.com/me?fields=name", (RequestListener)srl);

次のようにする必要があります。

afr.request("me?fields=name", (RequestListener)srl);
4

2 に答える 2

1

送信されている実際のリクエストは次のようなものです

/me?fields=name?access_token=MYACCESSTOKEN

もちろん、それは間違っています。疑問符ではなく、2 番目のパラメーターの前にアンパサンドを付ける必要があります。

アクセストークンがパラメーターとして追加されているコード内の場所を探す必要があります。その時点で、access_token パラメータを追加する前に、この URL に疑問符が含まれているかどうかを確認する必要があります。

于 2012-07-16T20:18:43.740 に答える