com.haoxuer.discover.user.oauth.impl.WeiAppOauthHandler Maven / Gradle / Ivy
package com.haoxuer.discover.user.oauth.impl;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.haoxuer.discover.user.oauth.api.OauthHandler;
import com.haoxuer.discover.user.oauth.domain.WeiApp;
import com.haoxuer.discover.user.oauth.domain.TokenResponse;
import com.haoxuer.utils.http.Connection;
import com.haoxuer.utils.http.HttpConnection;
/**
* Created by ada on 2017/6/29.
*/
public class WeiAppOauthHandler implements OauthHandler {
private String oauth_consumer_key;
private String secret;
@Override
public void setKey(String oauth_consumer_key) {
this.oauth_consumer_key = oauth_consumer_key;
}
@Override
public void setSecret(String secret) {
this.secret = secret;
}
@Override
public WeiApp login(String access_token, String openid) {
WeiApp weixin = null;
try {
Connection con = HttpConnection.connect("https://api.weixin.qq.com/sns/jscode2session");
con.data("js_code", access_token);
con.data("appid", oauth_consumer_key);
con.data("secret", secret);
con.data("grant_type", "authorization_code");
String body;
body = con.execute().body();
Gson gson = new Gson();
weixin = gson.fromJson(body, WeiApp.class);
} catch (Exception e) {
e.printStackTrace();
}
return weixin;
}
@Override
public TokenResponse getToken(String code) {
TokenResponse result = new TokenResponse();
try {
Connection con = HttpConnection.connect("https://api.weixin.qq.com/sns/jscode2session");
con.data("js_code", code);
con.data("appid", oauth_consumer_key);
con.data("secret", secret);
con.data("grant_type", "authorization_code");
String body;
body = con.execute().body();
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(body);
result.setAccessToken(ElementUtils.getString(element, "session_key"));
result.setRefreshToken(ElementUtils.getString(element, "refresh_token"));
result.setTokenType("weiapp");
result.setExpiresIn(ElementUtils.getInt(element, "expires_in"));
result.setOpenId(ElementUtils.getString(element, "openid"));
result.setUnionid(ElementUtils.getString(element, "unionid"));
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}