AndroidにOpenIdを実装しようとしていますが、400エラーが発生し続けます。パラメータのフォーマットが間違っていると思います。
私はこのブラウザ行に基づいてパラメータを設定しているので、サーバーに正しくアクセスできます。
https://www.google.com/accounts/o8/ud
?openid.ns=http://specs.openid.net/auth/2.0
&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select
&openid.identity=http://specs.openid.net/auth/2.0/identifier_select
&openid.return_to=http://www.example.com/checkauth
&openid.realm=http://www.example.com/
&openid.assoc_handle=ABSmpf6DNMw
&openid.mode=checkid_setup
これがコードです
try {
HttpsURLConnection con;
URL url2 = new URL("https://www.google.com/accounts/o8/ud");
con = (HttpsURLConnection) url2.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("GET");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("openid.ns", "http://specs.openid.net/auth/2.0"));
params.add(new BasicNameValuePair("openid.claimed_id", "http://specs.openid.net/auth/2.0/identifier_select"));
params.add(new BasicNameValuePair("openid.identity", "http://specs.openid.net/auth/2.0/identifier_select"));
params.add(new BasicNameValuePair("openid.return_to", "http://www.example.com/checkauth"));
params.add(new BasicNameValuePair("openid.realm", "http://www.example.com/"));
params.add(new BasicNameValuePair("openid.assoc_handle", "ABSmpf6DNMw"));
params.add(new BasicNameValuePair("openid.mode", "checkid_setup"));
String content = AuthUtils.getRequestParams(params);
con.setFixedLengthStreamingMode(content.getBytes("UTF-8").length);
OutputStream out = con.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
writer.write(content);
writer.close();
out.close();
Log.d(TAG, "response code = " + con.getResponseCode());
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String input;
while ((input = br.readLine()) != null){
System.out.println(input);
}
br.close();
} catch (MalformedURLException e) {
Log.e(TAG, e.toString());
e.printStackTrace();
} catch (IOException e) {
Log.e(TAG, e.toString());
e.printStackTrace();
} catch (Exception e) {
Log.e(TAG, e.toString());
e.printStackTrace();
}