当我尝试调用Facebook REST API调用时,我一直收到以下错误:
错误代码:100 - 参数帐户必须是数组
基于JSON的回复(来自Facebook):
{"error_code":100,"error_msg":"param accounts must be an array.","request_args":
[{"key":"accounts","value":"{email_hash:5232156322_55ddgvc3db5ddcf218049dd564da2x06}"},
{"key":"api_key","value":"23b2c4c6a23445fbffssf8aab96a5e5"},
{"key":"format","value":"JSON"},{"key":"method","value":"Connect.registerUsers"},{"key":"sig","value":"3sd54153a31382fa6e72eecf3c57d7c9"},{"key":"v","value":"1.0"}],"message":"Unknown exception","code":0}
我设置Java代码以使用HttpClient调用REST端点,如下所示:
String API_KEY = "23b2c4c6a23445fbffssf8aab96a5e5";
String toConnectRegisterUsersSignature =
"accounts="
+ "{email_hash:" + emailHash + "}"
+ "api_key=" + API_KEY
+ "format=JSON"
+ "method=Connect.registerUsers"
+ "v=1.0"
+ "0c786155bd3cxe8228d924542da5gf2";
String connectRegisterUsersSignature = SimpleMd5.MD5(toConnectRegisterUsersSignature);
NameValuePair[] connectRegisterUsersParameters =
{
new NameValuePair("accounts", "{email_hash:" + emailHash + "}"),
new NameValuePair("api_key", API_KEY),
new NameValuePair("format", "JSON"),
new NameValuePair("method", "Connect.registerUsers"),
new NameValuePair("sig", connectRegisterUsersSignature),
new NameValuePair("v", "1.0")
};
尝试了以下组合,我仍然得到同样的错误!
Signature: "accounts=" + "[email_hash=" + emailHash + "]"
new NameValuePair("accounts", "[email_hash=" + emailHash + "]")
Signature: "accounts=" + "email_hash[" + emailHash + "]"
new NameValuePair("accounts", "email_hash[" + emailHash + "]")
Signature: "accounts=" + "email_hash(" + emailHash + ")"
new NameValuePair("accounts", "email_hash(" + emailHash + ")")
Signature: "accounts=" + "[email_hash=" + emailHash + "]"
new NameValuePair("accounts", "[email_hash=" + emailHash + "]")
Signature: "accounts=" + "email_hash=" + emailHash
new NameValuePair("accounts", "email_hash=" + emailHash)
Signature: "accounts=" + "[{email_hash:" + emailHash + "}]"
new NameValuePair("accounts", "[{email_hash:" + emailHash + "}]"),
有谁知道如何构建响应请求的数组?
编程愉快,感谢您花时间阅读本文。
答案 0 :(得分:0)
我不确定这会有多大的帮助,但以下是使用PyFacebook包装器在Python中工作的(抱歉,不熟悉Java方法):
hashed_email = facebook.hash_email('mary@example.com')
# >>> hashed_email
# >>> '4228600737_c96da02bba97aedfd26136e980ae3761'
regaccounts = [{"email_hash": hashed_email}]
facebook.connect.registerUsers(regaccounts)
PyFacebook包装器发送api_key(这是唯一的其他required parameter)
P.S。如果有任何安慰,你的问题让我意识到我在similar case出错了!