package com.yeshi.fanli.controller;
|
|
import java.io.PrintWriter;
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLDecoder;
|
import java.util.Date;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.taobao.TaoBaoUnionAuthRecord;
|
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionAuthRecordService;
|
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
|
import com.yeshi.fanli.util.AESUtil;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
|
import net.sf.json.JSONObject;
|
|
/**
|
* 授权回调
|
*
|
* @author Administrator
|
*
|
*/
|
@Controller
|
@RequestMapping("client/v1/auth/callback")
|
public class AuthCallBackController {
|
|
@Resource
|
private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
|
|
@Resource
|
private TaoBaoUnionAuthRecordService taoBaoUnionAuthRecordService;
|
|
@RequestMapping(value = "tb")
|
public void tb(String code, String state, PrintWriter out) {
|
if (StringUtil.isNullOrEmpty(code) || StringUtil.isNullOrEmpty(state))
|
return;
|
String stateStr = AESUtil.decrypt(state, Constant.UIDAESKEY);
|
int errCode = 0;
|
if (StringUtil.isNullOrEmpty(stateStr)) {
|
// 解密错误
|
errCode = 1;
|
}
|
JSONObject json = JSONObject.fromObject(stateStr);
|
Long time = json.optLong("t");
|
Long uid = json.optLong("u");
|
if (System.currentTimeMillis() - time > 1000 * 60 * 10L) {
|
// 过时
|
errCode = 2;
|
}
|
if (uid == null || uid.longValue() == 0L)
|
errCode = 3;
|
|
// 计入记录
|
|
try {
|
String result = TaoKeApiUtil.getAccessToken(code, Constant.TAOBAO_AUTH_APPKEY,
|
Constant.TAOBAO_AUTH_APPSECRET);
|
JSONObject data = JSONObject.fromObject(result);
|
data = data.optJSONObject("top_auth_token_create_response").optJSONObject("token_result");
|
String accessToken = data.optString("access_token");
|
String openUid = data.optString("taobao_open_uid");
|
String taoBaoUid = data.optString("taobao_user_id");
|
String nickName = data.optString("taobao_user_nick");
|
if (!StringUtil.isNullOrEmpty(nickName))
|
try {
|
nickName = URLDecoder.decode(nickName, "UTF-8");
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
// userExtraTaoBaoInfoService.addRelationId(uid, relationId);
|
TaoBaoUnionAuthRecord record = new TaoBaoUnionAuthRecord();
|
record.setUser(new UserInfo(uid));
|
record.setTaoBaoOpenUid(openUid);
|
record.setTaoBaoUserId(taoBaoUid);
|
record.setTaoBaoUserNick(nickName);
|
record.setCreateTime(new Date());
|
taoBaoUnionAuthRecordService.addAuthRecord(record);
|
} catch (Exception e) {
|
errCode = 4;
|
}
|
|
out.print("<html><body>绑定错误:错误码(" + errCode + ")</body></html>");
|
}
|
|
}
|