package com.gustz.dove.mpcli.api.security.service.impl;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.sinovatech.rd.wcsb.cli.api.security.service.impl.OauthServiceImpl;
import com.sinovatech.rd.wcsb.cli.api.service.conf.WebsUrlParam;
import com.sinovatech.rd.wcsb.mpcli.api.security.req.AcTokenOAuthReq;
import com.sinovatech.rd.wcsb.mpcli.api.security.rsp.AcTokenOAuthRsp;
import com.sinovatech.rd.wcsb.mpcli.api.security.service.OauthMpService;
import com.gustz.dove.mpcli.api.service.conf.SecurityWsUrl;
import com.sinovatech.rd.wcsb.mpcli.api.user.req.UserReq;
import com.sinovatech.rd.wcsb.mpcli.api.user.rsp.UserRsp;
/**
*
* TODO: OAuth服务的接口实现
*
* @author ZHENFENG ZHANG
* @since [ Aug 3, 2015 ]
*/
@Service
public class OauthMpServiceImpl extends OauthServiceImpl implements OauthMpService {
/**
* 获取snsapi_base范围的OAuth授权URL
*
* @param cliAppCode
* @param state
* @return
*/
@Override
public String getSnsapiBaseUrl(String cliAppCode, String state) {
//
return this.getSnsapiBaseUrl(SecurityWsUrl.WSC02103MP, cliAppCode, state);
}
/**
* 获取snsapi_userinfo范围的OAuth授权URL
*
* @param cliAppCode
* @param state
* @return
*/
@Override
public String getSnsapiUserInfoUrl(String cliAppCode, String state) {
//
return this.getSnsapiUserInfoUrl(SecurityWsUrl.WSC02103MP, cliAppCode, state);
}
/**
* 获取Access_Token(oAuth认证,此access_token与基础支持的access_token不同)
*
* @param sn
* @param cliAppCode
* @param req
* @return
*/
@Override
public AcTokenOAuthRsp getOAuthAcToken(long sn, String cliAppCode, AcTokenOAuthReq req) {
SecurityWsUrl _wsUrl = SecurityWsUrl.WSC02102MP;
// 请求参数
Map<String, String> _paramMap = new HashMap<String, String>();
_paramMap.put(WebsUrlParam.APP_ID, req.getBody().getAppId()); // 公众号唯一标识
_paramMap.put(WebsUrlParam.APP_SECRET, req.getBody().getAppSecret());
_paramMap.put(WebsUrlParam.CODE, req.getBody().getCode());
this.setWebsUrlParamMap(_paramMap);
// do
return this.httpGet(_wsUrl, sn, cliAppCode, new AcTokenOAuthRsp(sn, _wsUrl.getWebsCode()));
}
/**
* 通过OAuth获取用户详情
*
* @param sn
* @param cliAppCode
* @param oauthAcToken
* @param req
* @return
*/
@Override
public UserRsp getUserByOAuth(long sn, String cliAppCode, String oauthAcToken, UserReq req) {
SecurityWsUrl _wsUrl = SecurityWsUrl.WSC02101MP;
// 请求参数
Map<String, String> _paramMap = new HashMap<String, String>();
_paramMap.put(WebsUrlParam.ACCESS_TOKEN, oauthAcToken); // OAuth凭证
_paramMap.put(WebsUrlParam.OPEN_ID, req.getBody().getOpenId()); // 公众号
_paramMap.put(WebsUrlParam.LANG, req.getBody().getLang());
this.setWebsUrlParamMap(_paramMap);
//
return this.httpGet(_wsUrl, sn, cliAppCode, new UserRsp(sn, _wsUrl.getWebsCode()));
}
@Override
protected void setAccessTokenX(long sn, String cliAppCode, String devAcCode) {
// ignored
}
}