Неверное исключение параметра для client.auth_getSession () в java API Facebook - PullRequest
3 голосов
/ 25 июня 2009

Я хочу подключиться к своему приложению facebook с помощью java api facebook 2.1.1 (http://code.google.com/p/facebook-java-api/). Мое приложение находится в режиме «Рабочий стол», поэтому я должен иметь доступ к нему вне веб-приложения. Я также не определил для него URL-адрес обратного вызова. Мой код выглядит примерно так.

FacebookJsonRestClient client = new FacebookJsonRestClient( FB_APP_API_KEY, FB_APP_SECRET );
String token = client.auth_createToken();
HttpClient http = new HttpClient();
http.setParams(new HttpClientParams());
http.setState(new HttpState());

final String LOGIN = "https://login.facebook.com/login.php";

GetMethod get = new GetMethod(LOGIN + "?api_key=" + FB_APP_API_KEY + "&v=1.0&auth_token=" + token );

http.executeMethod(get);

PostMethod post = new PostMethod(LOGIN);
post.addParameter(new NameValuePair("api_key", FB_APP_API_KEY));
post.addParameter(new NameValuePair("v", "1.0"));
post.addParameter(new NameValuePair("auth_token", token));
post.addParameter(new NameValuePair("email", "my-email"));
post.addParameter(new NameValuePair("pass", "my-password"));

http.executeMethod(post);

String session = client.auth_getSession(token);

Однако вместо возврата сеанса API выдает исключение:

com.google.code.facebookapi.FacebookException: Invalid parameter
    at com.google.code.facebookapi.FacebookJsonRestClient.parseCallResult(FacebookJsonRestClient.java:354)
    at com.google.code.facebookapi.ExtensibleClient.callMethod(ExtensibleClient.java:535)
    at com.google.code.facebookapi.ExtensibleClient.callMethod(ExtensibleClient.java:472)
    at com.google.code.facebookapi.FacebookJsonRestClient.auth_getSession(FacebookJsonRestClient.java:278)

Может кто-нибудь сказать, что не так с этим кодом? И как правильно получить доступ к приложению facebook в режиме рабочего стола с помощью Java API (v. 2.1.1).

Спасибо за вашу помощь.

С уважением Набиэль Мухтар

Ответы [ 2 ]

1 голос
/ 17 октября 2009

Насколько я понимаю API FB, вы не должны вводить имя пользователя и пароль вручную, но вместо этого пользователь должен вводить их вручную, а затем разрешить вход в Facebook, чтобы перенаправить пользователя обратно в ваше приложение. Это означает, что вместо предоставления «email» и «pass» вы предоставляете URL «next» и «cancel»: s вместо этого.

Это чисто защитная функция FB API, и хотя теория, лежащая в ее основе, в порядке, исполнение далеко не оптимально.

1 голос
/ 06 июля 2009

См. Эту ветку обсуждения на сайте Google Code. В этой теме есть ссылка на вики-страницу, которая объясняет, как выполнить аутентификацию на рабочем столе.

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