2013-06-04 79 views
0

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

谢谢。

回答

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; 
} 
相关问题