View Javadoc
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  	 * {@inheritDoc}
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  }