1 package org.oxerr.spring.security.wechat.samples.helloworld.service.impl;
2
3 import org.oxerr.spring.security.wechat.core.userdetails.WeChatUserDetailsService;
4 import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.security.authentication.BadCredentialsException;
6 import org.springframework.security.core.AuthenticationException;
7 import org.springframework.security.core.userdetails.UserDetails;
8 import org.springframework.stereotype.Service;
9
10 import com.foxinmy.weixin4j.exception.WeixinException;
11 import com.foxinmy.weixin4j.mp.api.OauthApi;
12 import com.foxinmy.weixin4j.mp.model.OauthToken;
13 import com.foxinmy.weixin4j.mp.model.User;
14
15 @Service
16 public class WeChatUserDetailsServiceImpl implements WeChatUserDetailsService {
17
18 private OauthApi oauthApi;
19
20 @Autowired
21 public WeChatUserDetailsServiceImpl(OauthApi oauthApi) {
22 this.oauthApi = oauthApi;
23 }
24
25
26
27
28 @Override
29 public UserDetails loadUserByCode(String code)
30 throws AuthenticationException {
31 try {
32 OauthToken oauthToken = oauthApi.getAuthorizationToken(code);
33 User user = oauthApi.getAuthorizationUser(oauthToken);
34 return new WeChatUserDetails(user);
35 } catch (WeixinException e) {
36 throw new BadCredentialsException(e.getMessage(), e);
37 }
38 }
39
40 }