GoogleLogin Client Authentication

I am trying to authenticate using 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(); 

But I get Error=BadAuthentication . How should I fix my code?

+6
java authentication google-app-engine google-api google-authentication
source share
1 answer

You must set the correct application/x-www-form-urlencoded Content-type and use the OutputStream to write the POST body.

 //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(); } 

See this example for processing the result to get the auth token.

+5
source share

All Articles