diff --git a/src/main/java/com/renren/api/AccessToken.java b/src/main/java/com/renren/api/AccessToken.java index 932e908..c066e12 100644 --- a/src/main/java/com/renren/api/AccessToken.java +++ b/src/main/java/com/renren/api/AccessToken.java @@ -5,6 +5,8 @@ */ package com.renren.api; +import com.renren.api.service.User; + /** * @author Xun Dai * @@ -24,8 +26,28 @@ public static enum Type { private String macKey; private String macAlgorithm; + + private int expiresIn; + + private User user; + + public User getUser() { + return user; + } - public Type getType() { + public void setUser(User user) { + this.user = user; + } + + public int getExpiresIn() { + return expiresIn; + } + + public void setExpiresIn(int expiresIn) { + this.expiresIn = expiresIn; + } + + public Type getType() { return type; } @@ -45,6 +67,18 @@ public String getMacAlgorithm() { return macAlgorithm; } + public AccessToken(Type type, String accessToken, String refreshToken, String macKey, + String macAlgorithm, int expiresIn, User user) { + super(); + this.type = type; + this.accessToken = accessToken; + this.refreshToken = refreshToken; + this.macKey = macKey; + this.macAlgorithm = macAlgorithm; + this.expiresIn = expiresIn; + this.user = user; + } + public AccessToken(Type type, String accessToken, String refreshToken, String macKey, String macAlgorithm) { super(); diff --git a/src/main/java/com/renren/api/RennClient.java b/src/main/java/com/renren/api/RennClient.java index aad6ce8..62d7d73 100644 --- a/src/main/java/com/renren/api/RennClient.java +++ b/src/main/java/com/renren/api/RennClient.java @@ -14,6 +14,7 @@ import com.renren.api.http.HttpRequest.HttpRequestException; import com.renren.api.json.JSONException; import com.renren.api.json.JSONObject; +import com.renren.api.mapper.JsonMappingException; import com.renren.api.mapper.ObjectMapper; import com.renren.api.service.AppService; import com.renren.api.service.StatusService; @@ -28,6 +29,7 @@ import com.renren.api.service.FeedService; import com.renren.api.service.PlaceService; import com.renren.api.service.CommentService; +import com.renren.api.service.User; import com.renren.api.service.UserService; import com.renren.api.service.FriendService; import com.renren.api.service.ProfileService; @@ -141,7 +143,7 @@ public RennClient(String clientId, String clientSecret) { this.objectMapper = new ObjectMapper(); } - public void authorizeWithAuthorizationCode(String code, String redirectUri) + public AccessToken authorizeWithAuthorizationCode(String code, String redirectUri) throws AuthorizationException { Map params = new HashMap(); @@ -150,9 +152,10 @@ public void authorizeWithAuthorizationCode(String code, String redirectUri) params.put("grant_type", "authorization_code"); params.put("code", code); params.put("redirect_uri", redirectUri); - params.put("token_type", AccessToken.Type.MAC.toString()); + params.put("token_type", AccessToken.Type.Bearer.toString()); this.accessToken = requestAccessToken(params); + return this.accessToken; } /** @@ -181,8 +184,18 @@ private AccessToken requestAccessToken(Map params) AccessToken.Type type = response.has("mac_algorithm") && response.has("mac_algorithm") ? AccessToken.Type.MAC : AccessToken.Type.Bearer; + + int expiresIn = response.has("expires_in") ? response.getInt("expires_in"): 0; + + User user = null; + if(response.has("user")){ + try { + user = objectMapper.map(response.getJSONObject("user"), User.class); + } catch (JsonMappingException e) { + } + } - return new AccessToken(type, accessToken, refreshToken, macKey, macAlgorithm); + return new AccessToken(type, accessToken, refreshToken, macKey, macAlgorithm, expiresIn, user); } else { throw new AuthorizationException("Authorization failed with Authorization Code. "