Аутентификация Google с помощью Java Apache http токенов - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь пройти аутентификацию в Google с помощью простой программы на Java.Я отправляю на правильный URL с моими учетными данными.Я получаю ответ с HTTP-кодом состояния 200, но в нем нет ни одного маркера аутентификации, необходимого для получения каналов пользователя.Вот код

private static String postData = "https://www.google.com/accounts/ClientLogin?Content-type=application/x-www-form-urlencoded&accountType=GOOGLE&Email=xxxxxxxx&Passwd=xxxxx";

public GoogleConnector(){
    HttpClient client=new DefaultHttpClient();
    HttpPost method=new HttpPost(postData);
    try{
        HttpResponse response=client.execute(method);
        System.out.println(response.toString());
    }
    catch(Exception e){ 
    }

1 Ответ

1 голос
/ 10 марта 2012

Хорошо, первая проблема, с которой вы столкнулись, это то, что Content-Type должен быть заголовком, а не параметром запроса.И, во-вторых, параметры POST должны быть добавлены в тело запроса, а не в URL запроса.Ваш код должен выглядеть примерно так:

HttpClient client = new DefaultHttpClient();

HttpPost method = new HttpPost("https://www.google.com/accounts/ClientLogin");
method.setHeader("Content-Type", "application/x-www-form-urlencoded");

List<BasicNameValuePair> postParams = new ArrayList<BasicNameValuePair>(4);
postParams.add(new BasicNameValuePair("accountType", "GOOGLE"));
postParams.add(new BasicNameValuePair("Email", "xxxxxxx"));
postParams.add(new BasicNameValuePair("Passwd", "xxxxxx"));
postParams.add(new BasicNameValuePair("service", "cl"));

UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParams);
method.setEntity(formEntity);

HttpResponse response=client.execute(method);
System.out.println(response.toString());
...