Facebook营销API参数错误:special_ad_categories需为数组
解决Facebook营销API的special_ad_categories参数格式错误问题
你碰到的这个400错误根源很明确——你把要求是数组类型的参数,当成普通字符串传递了。API文档里明确说明special_ad_categories需要是array<enum>类型,但你用putString传了一个看起来像数组的字符串"[NONE]",这在API眼里就是个普通字符串,完全不符合数组类型的要求,自然就报错了。
正确的参数传递写法
在Android的Bundle中,要传递数组类型参数,得用专门的数组方法,而不是把数组转成字符串。修正后的代码如下:
Bundle params = new Bundle(); params.putString("name","My campaign"); params.putString("objectives","LINK_CLICKS"); params.putString("status","PAUSED"); // 使用putStringArray传递数组类型参数 params.putStringArray("special_ad_categories", new String[]{"NONE"});
额外优化方案
如果你的项目允许,也可以用JSONObject来构建请求参数,这种方式能更直观地处理复杂类型,降低格式错误的概率:
JSONObject params = new JSONObject(); try { params.put("name", "My campaign"); params.put("objectives", "LINK_CLICKS"); params.put("status", "PAUSED"); JSONArray specialAdCategories = new JSONArray(); specialAdCategories.put("NONE"); params.put("special_ad_categories", specialAdCategories); } catch (JSONException e) { e.printStackTrace(); }
内容的提问来源于stack exchange,提问作者cbsah55
相关产品推荐
相关产品推荐

