package cn.mb.cloud.auth.security.social.handler; import cn.mb.cloud.auth.security.entity.User; import cn.mb.cloud.auth.security.service.IUserService; import cn.mb.cloud.auth.security.util.AppleUtil; import cn.mb.cloud.common.api.vo.UserVO; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; /** * @author jason * @date 2018/11/18 */ @Slf4j @Component("APPLE") @AllArgsConstructor public class AppleLoginHandler extends AbstractLoginHandler { private final IUserService userService; /** * 苹果登录传入identityToken *

* * @param identityToken * @return */ @Override public String identify(String identityToken) { String email = null; if (!StringUtils.isEmpty(identityToken)) { JSONObject json = null; try { System.out.println("identityToken:" + identityToken); //验证identityToken if (!AppleUtil.verify(identityToken)) { return null; } //对identityToken解码 json = AppleUtil.parserIdentityToken(identityToken); if (json == null) { return null; } System.out.println(json.toString()); } catch (Exception e) { e.printStackTrace(); } email = json.getString("email"); } return email; } /** * openId 获取用户信息 * * @param openId * @return */ @Override public UserVO info(String openId, String threeAvatar, String threeName) { User user = userService.getOne(Wrappers.query().lambda().eq(User::getOpenId, openId)); if (user == null) { /* log.info("苹果未绑定:{}", openId); return null;*/ user = userService.getOne(Wrappers.query().lambda() .eq(User::getOpenId, openId) .eq(User::getDelFlag, 0)); } UserVO userVO = new UserVO(); BeanUtils.copyProperties(user, userVO); if (StringUtils.isEmpty(user.getUsername())) { userVO.setUsername(user.getOpenId().toString()); } //登录更新设备号,设备类型,版本号 return userVO; } }