Аутентификация Google ClientLogin
Я пытаюсь сделать аутентификацию с помощью ClientLogin
URL url = new URL("https://www.google.com/accounts/ClientLogin");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Email", "testonly%2Ein%2E2011%40gmail%2Ecom");
connection.setRequestProperty("Passwd", "mypass");
connection.setRequestProperty("accountType", "HOSTED");
connection.setRequestProperty("service", "apps");
connection.connect();
Но я получаю Error=BadAuthentication
. Как я должен исправить свой код?
1 ответ:
Вы должны установить правильный
application/x-www-form-urlencoded Content-type
и использоватьOutputStream
для записи тела сообщения.//Open the Connection HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoInput(true); urlConnection.setDoOutput(true); urlConnection.setUseCaches(false); urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // Form the POST parameters StringBuilder content = new StringBuilder(); content.append("Email=").append(URLEncoder.encode(youremail, "UTF-8")); content.append("&Passwd=").append(URLEncoder.encode(yourpassword, "UTF-8")); content.append("&service=").append(URLEncoder.encode(yourapp, "UTF-8")); OutputStream outputStream = urlConnection.getOutputStream(); outputStream.write(content.toString().getBytes("UTF-8")); outputStream.close(); // Retrieve the output int responseCode = urlConnection.getResponseCode(); InputStream inputStream; if (responseCode == HttpURLConnection.HTTP_OK) { inputStream = urlConnection.getInputStream(); } else { inputStream = urlConnection.getErrorStream(); }
СмотритеЭтот пример обработки результата для получения токена
auth
.