package com.fanbaobao.action;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import net.sf.json.JSONObject;
import com.bjdata.util.SecurityUtils;
import com.fanbaobao.service.FbbUser;
import com.fanbaobao.service.FbbService.Client;
import com.fanbaobao.util.FbbUtil;
import com.fanbaobao.util.MD5Util;
import com.sun.xml.internal.fastinfoset.stax.events.Util;
import com.taobao.api.internal.util.WebUtils;
public class TaobaoAction extends BaseAction {
private static final Logger logger = Logger.getLogger(TaobaoAction.class);
private String errorMsg;
public static String KEY = "xxx"; //沙箱环境key
public static String SECRET = "xxxx";
public static String REDIRECT="l";
public static String AUTHORIZEURL="";//沙箱环境
public static String TOKENURL=""; //沙箱环境
public static String SAFEKEY="*(.com#$^&";
static{
try
{
Properties propert = new Properties();
java.io.InputStream in = TaobaoAction.class.getClassLoader().getResourceAsStream("login.properties");
propert.load(in);
KEY=propert.getProperty("TAOBAO_KEY",KEY);
SECRET=propert.getProperty("TAOBAO_SECRET",SECRET);
REDIRECT=propert.getProperty("TAOBAO_REDIRECT",REDIRECT);
AUTHORIZEURL=propert.getProperty("TAOBAO_AUTHORIZEURL",AUTHORIZEURL);
TOKENURL=propert.getProperty("TAOBAO_ACCESSTOKENURL",TOKENURL);
}
catch(Exception e)
{
}
}
public void toLogin() throws IOException{
StringBuilder url=new StringBuilder(AUTHORIZEURL);
url.append("?response_type=code")
.append("&client_id=").append(KEY)
.append("&redirect_uri=").append(REDIRECT)
.append("&state=").append(MD5Util.MD5Encode(SECRET+SAFEKEY+KEY, null));
getResponse().sendRedirect(url.toString()); //重定向到新浪授权页面
}
public String doLogin() throws Exception{
HttpServletRequest request=this.getRequest();
String code=request.getParameter("code");
String state=request.getParameter("state");
logger.info("taobao doLogin state:"+state);
if(Util.isEmptyString(code)){
errorMsg="淘宝快捷登录授权失败,请重新授权!";
return LOGIN;
}
Map<String, String> param = new HashMap<String, String>();
param.put("grant_type", "authorization_code");
param.put("code",code);
param.put("client_id",KEY);
param.put("client_secret",SECRET);
param.put("redirect_uri",REDIRECT);
param.put("view", "web");
param.put("state",state);
param.put("scope", "item"); //item,promotion,usergrade
String responseJson=WebUtils.doPost(TOKENURL, param, 3000, 3000);
JSONObject jo=JSONObject.fromObject(responseJson);
if(jo.get("taobao_user_id")==null){
errorMsg="淘宝快捷登录验证失败!";
return LOGIN;
}
String user_id =jo.get("taobao_user_id").toString();
String user_name=jo.get("taobao_user_nick").toString();
HttpSession session=request.getSession();
Client client = FbbUtil.getClient();
FbbUser fbbUser= client.doOauth(3, user_id);
session.setAttribute("fbbUserInfo", fbbUser);
return SUCCESS;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
}
|