Проблема входа в FaceBook - PullRequest
0 голосов
/ 09 июня 2010

Я собираюсь найти приложение, которое извлекает информацию из поиска в Facebook, поэтому мне нужно войти в Facebook. Я зарегистрировал свое приложение на сайте разработчиков Facebook и получил ключ API и секретный ключ. в моем коде я получаю исключение при попытке войти в систему. Вот мой код для входа в Facebook:

import com.facebook.api.FacebookRestClient;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpState;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;


public class FaceLogin {
    public FaceLogin(){
        getUserID("username", "password");
    }


private static void getUserID(String email, String password)
{
        String session = null;
        try {
            HttpClient http = new HttpClient();
            http.setParams(new HttpClientParams());                             //http.getHostConfiguration().setHost("http://www.facebook.com/");
            http.setState(new HttpState());
            String api_key = "***********some key*************";                 
            String secret  = "***********some key*************";                 
            FacebookRestClient client = new FacebookRestClient(api_key, secret);
            client.setIsDesktop(true);

        String token = client.auth_createToken();
        final String loginId = "http://www.facebook.com/login.php";
        GetMethod get = new GetMethod(loginId + "?api_key=" + api_key + "&v=1.0&auth_token=" +token);
        System.out.println("Get="+get);
        http.executeMethod(get);

        PostMethod post = new PostMethod(loginId);

        post.addParameter(new NameValuePair("api_key", api_key));
        post.addParameter(new NameValuePair("v", "1.0"));
        post.addParameter(new NameValuePair("auth_token", token));
        post.addParameter(new NameValuePair("fbconnect","true"));
        post.addParameter(new NameValuePair("return_session","true"));
        post.addParameter(new NameValuePair("session_key_only","true"));
        post.addParameter(new NameValuePair("req_perms","read_stream,publish_stream"));
        post.addParameter(new NameValuePair("lsd","8HYdi"));
        post.addParameter(new NameValuePair("locale","en_US"));
        post.addParameter(new NameValuePair("persistent","1"));
        post.addParameter(new NameValuePair("email", email));
        post.addParameter(new NameValuePair("pass", password));


        System.out.println("Token ="+token);
        int postStatus = http.executeMethod(post);
        System.out.println("Response : " + postStatus);

        session = client.auth_getSession(token);                            // Here I am getting error
        System.out.println("Session string: " + session);
        long userid = client.users_getLoggedInUser();
        System.out.println("User Id is : " + userid);

    } catch (Exception e) {
        e.printStackTrace();

    }
}
public static void main(String k[])
{
    FaceLogin facebookLoginObj=new FaceLogin();
}
}

Я получаю следующее исключение:

org.apache.commons.httpclient.HttpMethodBase processResponseHeaders

ВНИМАНИЕ: cookie отклонено: "$ Version = 0; $ Домен = удален; $ Path = /; $ Domain = .facebook.com ". Имя файла cookie не может начинаться с $

Ответ: 200

8 июня 2010 14:07:36 org.apache.commons.httpclient.HttpMethodBase processResponseHeaders

ВНИМАНИЕ: cookie отклонено: "$ Version = 0; $ Path = исключить; $ Path = /; $ Domain = .facebook.com ". Имя файла cookie может не начинаться с $

Facebook возвращает код ошибки 100

com.facebook.api.FacebookException: Неверный параметр - v -> 1,0 на com.facebook.api.FacebookRestClient.callMethod (FacebookRestClient.java:828) - auth_token -> 004e90dc8818d5f0921d1065d24508d3 на com.facebook.api.FacebookRestClient.callMethod (FacebookRestClient.java:606) - метод -> facebook.auth.getSession - call_id -> 1275986256796 - api_key -> f7cb1e48c383ef599da9021fc4dec322 на com.facebook.api.FacebookRestClient.auth_getSession (FacebookRestClient.java:1891) на facebookcrawler.FacebookLogin.getUserID (FacebookLogin.java:81) на facebookcrawler.FacebookLogin. ( - sig -> 9344ec75b74a0a87bcae645046d45da8 FacebookLogin.java:24) на facebookcrawler.FaceLogin.main (FaceLogin.java:80)

Здесь может быть проблема с созданием сессии, я искал все решения в сети, но не смог помочь мне получить логин.

Пожалуйста, помогите мне, если вы можете предложить мне какой-то способ решить эту проблему. Я благодарю вас за ваше ценное предложение.

1 Ответ

0 голосов
/ 09 июня 2010

Я иду по интуиции здесь:

  • читая полученное исключение, кажется, что проблема связана с каким-то «неправильно сформированным» файлом cookie, на самом деле он говорит: «Имя файла cookie может начинаться не с $», что в случае файлов cookie соответствует RFC2109

  • Я вижу, что вы используете Apache HttpClient, который выполняет автоматическое управление файлами cookie и поддерживает различные спецификации файлов cookie (см. здесь )

  • , поскольку вы ничего не указали, я подозреваю, что HttpClient по умолчанию использует файлы cookie, совместимые с RFC2109, и, возможно, они не подходят для facebook.

Итак, вы можете попробовать другой CookiePolicy в HttpClient и посмотреть, что получится.

p.s. пожалуйста, проверьте еще раз исключение, которое вы скопировали и вставили выше, потому что я боюсь, что это раскрывает значение ваших api_key и auth_token

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