put リクエストで URL を呼び出そうとしていますが、その URL は
https://www.googleapis.com/groups/v1/groups/groupUniqueIdをPUTしますが、{ "error": { "errors": [ { "domain": "global", "reason": "required" としてエラー応答を取得します, "メッセージ": "必須" } ], "コード": 400, "メッセージ": "必須" } }
リンク https://developers.google.com/google-apps/groups-settings/v1/reference/groups/update を開くと、Try It セクションがあり、OAuth2.0 で承認し、いくつかのフィールドを次のように配置します。イメージで
この URL を呼び出すための Java サーブレットをここに記述します。ここにその doGet メソッド コードがあり、Google Appengine で記述しています。oauth2 でアプリケーションを承認し、acess_token が有効です。それ以外の場合は、承認エラーが表示されます。無効な値が表示されます。
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String url = "https://accounts.google.com/o/oauth2/token";
// FetchOptions opt = FetchOptions.Builder.doNotValidateCertificate();
URL url1=new URL(url);
String param="code="+req.getParameter("code")+"&client_id=719226850877-tr21kp47phthuli0hu2v24akgfrplde9.apps.googleusercontent.com&client_secret=hSXi3dWfEmDQfl0XZJJmBssc&redirect_uri=https://www.onemoredemo.appspot.com/oauth2callback&grant_type=authorization_code";
HttpURLConnection connection =
(HttpURLConnection)url1.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
connection.getOutputStream().write( param.getBytes() );
InputStream str= connection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(str));
String l="";
String l1="";
while((l=reader.readLine())!=null){
l1+=l;
resp.getWriter().println(l);
}
try {
JSONObject obj=new JSONObject();
obj.put("email", "testing9@iritesh.com");
JSONObject json=new JSONObject(l1);
String access_token=json.getString("access_token");
URL url2=new URL("https://www.googleapis.com/groups/v1/groups/testing@iritesh.com?key=AIzaSyATDZHO5J7a3ItTSBhPby__Xzxi7rZlMJQ");
HttpURLConnection connection1=(HttpURLConnection) url2.openConnection();
connection1.setRequestMethod("PUT");
connection1.addRequestProperty("Content-Type", "application/json");
connection1.setDoOutput(true);
connection1.addRequestProperty("Authorization","Bearer "+ access_token);
connection1.getOutputStream().write(obj.toString().getBytes());
connection1.connect();
InputStream str1= connection1.getInputStream();
BufferedReader reader1=new BufferedReader(new InputStreamReader(str1));
String rit;
while( (rit=reader1.readLine())!=null)
{resp.getWriter().println(rit);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
画像と同じリクエストをしてみました。最初に key パラメータを api キーに設定し、次に setRequestMethod("PUT"); を呼び出してリクエスト メソッドを PUT として設定します。その後、Authorization:Bearer access_token と Content-Type : application/json の 2 つのプロパティを追加し、メソッドを呼び出してリクエスト本文を json オブジェクトとして設定します。
connection1.getOutputStream().write(obj.toString().getBytes());
私が間違っている場所と無効な値を入れている場所を教えてください。