我在访问令牌时遇到异常 Socket java.lang.RuntimeException: com.google.apphosting.api.ApiProxy$FeatureNotEnabledException:
是否有任何解决方案发布请求(代码)以交换令牌
这是我用于检索代码以访问令牌的代码我正在使用 Httpclient 是任何解决方案
在 index.jsp 中
response.sendRedirect("https://accounts.google.com/o/oauth2/auth? scope=https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/userinfo.email&state=%2Fprofile&response_type=code&client_id=158645513564-88hf7od82d09ipr7uiamd540jpd2da1g.apps.googleusercontent.com&redirect_uri=http://gfksgnbgfcv.appspot.com/index2.jsp");
在 index2.jsp 中
<%@page import="com.login.client.TEST"%>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@page errorPage="errorPage.jsp" %>
<%
String code = request.getParameter("code");
String data=TEST.getParseValue(code);
%>
<%=code%>
<%=data %>
和Java代码
package com.login.client;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sourceforge.htmlunit.corejs.javascript.json.JsonParser.ParseException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.io.IOUtils;
public class TEST {
public static String getParseValue(String code) {
String token="no token";
String foros = "code="+code +
"&client_id=<YOUR_CLIENT_ID>" +
"&client_secret=<YOUR_CLIENT_SECRET>" +
"&redirect_uri="+"http://gfksgnbgfcv.appspot.com/index2.jsp" +
"&grant_type=authorization_code";
HttpClient client = new HttpClient();
String url = "https://accounts.google.com/o/oauth2/token";
PostMethod post = new PostMethod(url);
post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
try {
post.setRequestEntity(new StringRequestEntity(foros, null, null));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
String accessToken = null;
try {
client.executeMethod(post);
String jsonTxt = IOUtils.toString(post
.getResponseBodyAsStream());
JSONObject json = (JSONObject) JSONSerializer
.toJSON(jsonTxt);
String resp = post.getResponseBodyAsString();
token = (String) json.getString("access_token");
} catch (HttpException e) {
token=e.getMessage();
throw new RuntimeException(e);
} catch (IOException e) {
token=e.getMessage();
throw new RuntimeException(e);
} catch (Exception e) {
token=e.getMessage();
throw new RuntimeException(e);
}
return token;
}
}