我需要通过访问令牌在服务器端登录用户并获取他们的用户信息。有可能的 ?
我在 com.google.appengine.api 中查找,但找不到。
我使用 google oauth2 在客户端获取访问令牌,然后发送到服务器。
谢谢。
我需要通过访问令牌在服务器端登录用户并获取他们的用户信息。有可能的 ?
我在 com.google.appengine.api 中查找,但找不到。
我使用 google oauth2 在客户端获取访问令牌,然后发送到服务器。
谢谢。
我找到了将 url 调用到 google api 的解决方案。
public UserInfo login(String token) {
String json = getJsonDataFromUrl("https://www.googleapis.com/oauth2/v2/userinfo?access_token=" + token);
UserInfo userInfo = new UserInfo();
Gson gson = new Gson();
try{
userInfo = gson.fromJson(json, UserInfo.class);
userInfo.logined = true;
HttpSession session = getRequest().getSession();
session.setAttribute("userKey", userInfo.encodedKey);
}catch (Exception ex){
log.log(Level.WARNING, ex.getMessage());
throw ex;
}
return userInfo;
}
private String getJsonDataFromUrl(String aurl){
String json = "";
try {
URL url = new URL(aurl);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
json+=line;
}
reader.close();
} catch (MalformedURLException e) {
log.log(Level.SEVERE, e.getMessage());
return null;
} catch (IOException e) {
log.log(Level.SEVERE, e.getMessage());
return null;
}
return json;
}