次のようなFacebook バッチ リクエストがあります。
https://graph.facebook.com/?access_token=ACCESS_TOKEN&batch=[{"method": "GET", "relative_url": " search?q=EMAIL@ADDRESS.COM&type=user "}]
これをネットワーク経由で送信すると、次のように返されます。
{"error"=>0, "error_description"=>"batch parameter must be a JSON array"}
を削除すると&type=user
、正常に動作します (空のデータ配列が返されます)。Facebook が & 文字を正しく解析していないことは間違いありません。& 記号を %26 にエンコードできることをオンラインで読みましたが、その置換を使用すると、代わりに「EMAIL@ADDRESS.COM%26type=user」のクエリが実行されるようです。パラメータの順序を逆にすると、私の言いたいことがわかるでしょう。
修正されないバグレポートを提出せずに、Facebook のバッチリクエストパーサーに & 記号を認識させる方法はありますか?
編集:
URI.encode を使用しています。正確なコードは次のとおりです。
queries = email_array.map { |email| { :method => "GET", :relative_url => "search?q=#{email}&type=user" } }
route = "https://graph.facebook.com/?access_token=#{token}&batch=#{URI.encode(queries.to_json)}"
res = HTTParty.post(route)