我想将登录与gmail集成以及在我们的网站上登录facebook,这样没有新的注册用户就可以在我们的网站上创建他/她的帐户。它是一个基于java的网站的gwt。我尝试了一些代码并收到错误 java.io.IOException:服务器返回HTTP响应代码:401为URL:https://accounts.google.com/o/oauth2/token ,我完全不知道为什么我收到此错误。 我使用thisdoc代码。任何帮助,为什么我实际上得到这个错误。我错过了什么吗?任何帮助。
答案 0 :(得分:0)
显然它是未经授权的(401)..您必须提供 client_id 和 client_secret ,并且每个Gmail API请求都需要访问令牌强>
在重定向的方法中尝试此代码
String code = request.getParameter("code");
String urlParameters = "code=" + code + "&client_id="
+ CLIENT_ID + "&client_secret="
+ CLIENT_SECRET + "&redirect_uri="
+ REDIRECT_GMAIL_URI
+ "&grant_type=authorization_code";
URL url = new URL("https://accounts.google.com/o/oauth2/token");
URLConnection urlConn = url.openConnection();
urlConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(
urlConn.getOutputStream());
writer.write(urlParameters);
writer.flush();
String line, outputString = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(
urlConn.getInputStream()));
while ((line = reader.readLine()) != null) {
outputString += line;
}
JsonObject json = (JsonObject) new JsonParser().parse(outputString);
String access_token = json.get("access_token").getAsString();
url = new URL(
"https://www.googleapis.com/oauth2/v1/userinfo?access_token="
+ access_token);
urlConn = url.openConnection();
outputString = "";
reader = new BufferedReader(new InputStreamReader(
urlConn.getInputStream()));
while ((line = reader.readLine()) != null) {
outputString += line;
}
System.out.println(outputString);