Connect.registerUsers - Нужна помощь в создании массива для параметров аккаунта - PullRequest
0 голосов
/ 10 октября 2009

Я получаю следующую ошибку при попытке вызвать вызов API REST Facebook:

Connect.registerUsers

Код ошибки: 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-код для вызова конечной точки REST, используя HttpClient, например:

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 + "}]"),

Кто-нибудь знает, как построить этот массив, который запрашивает ответ?

Приятного программирования и спасибо, что нашли время прочитать это.

1 Ответ

0 голосов
/ 28 октября 2009

Я не уверен, насколько это поможет, но в Python для меня работает следующее, используя обертку PyFacebook (извините, я не знаком с методом 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 (который, кстати, является единственным другим обязательным параметром )

P.S. Если это утешит, ваш вопрос заставил меня понять, где я ошибся в подобном случае !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...