`
chengjiansunboy
  • 浏览: 3495 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
联合登录 淘宝,新浪,QQ联合登录
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;
		}

}
Global site tag (gtag.js) - Google Analytics