0

我需要通过访问令牌在服务器端登录用户并获取他们的用户信息。有可能的 ?
我在 com.google.appengine.api 中查找,但找不到。
我使用 google oauth2 在客户端获取访问令牌,然后发送到服务器。

谢谢。

4

1 回答 1

0

我找到了将 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;
}
于 2013-07-09T13:54:13.953 回答