6

tôi cố gắng làm cho xác thực bằng ClientLoginGoogle ClientLogin xác thực

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

Nhưng tôi nhận được Error=BadAuthentication. Tôi nên sửa mã của mình như thế nào?

+0

Tôi chạy nó ở nền tảng GAE, nếu nó quan trọng –

Trả lời

5

Bạn nên đặt đúng application/x-www-form-urlencoded Content-type và sử dụng OutputStream để viết nội dung POST.

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

Xem this ví dụ để xử lý kết quả nhận mã thông báo auth.

+0

+1 Cảm ơn rất nhiều. Thật không may, tôi sẽ có khả năng kiểm tra nó chỉ vào ngày mai. –

Các vấn đề liên quan