AuthWechatUrlBuilder.java 2.0 KB
Newer Older
1 2 3
package me.zhyd.oauth.url;

import me.zhyd.oauth.config.AuthSource;
智布道's avatar
智布道 已提交
4 5
import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthResponseStatus;
智布道's avatar
智布道 已提交
6
import me.zhyd.oauth.url.entity.AuthUserInfoEntity;
7 8 9 10 11 12 13 14 15 16

import java.text.MessageFormat;

/**
 * 微信相关的URL构建类
 *
 * @author yadong.zhang (yadong.zhang0415(a)gmail.com)
 * @version 1.0
 * @since 1.8
 */
智布道's avatar
智布道 已提交
17
public class AuthWechatUrlBuilder extends AuthDefaultUrlBuilder {
18 19 20 21 22 23 24

    private static final String WECHAT_AUTHORIZE_PATTERN = "{0}?appid={1}&redirect_uri={2}&response_type=code&scope=snsapi_login&state={3}#wechat_redirect";
    private static final String WECHAT_ACCESS_TOKEN_PATTERN = "{0}?appid={1}&secret={2}&code={3}&grant_type=authorization_code";
    private static final String WECHAT_REFRESH_TOKEN_PATTERN = "{0}?appid={1}&grant_type=refresh_token&refresh_token={2}";
    private static final String WECHAT_USER_INFO_PATTERN = "{0}?access_token={1}&openid={2}&lang=zh_CN";

    @Override
智布道's avatar
智布道 已提交
25 26
    public String getAccessTokenUrl(String code) {
        return MessageFormat.format(WECHAT_ACCESS_TOKEN_PATTERN, AuthSource.WECHAT.accessToken(), config.getClientId(), config.getClientSecret(), code);
27 28 29 30 31 32 33 34
    }

    @Override
    public String getUserInfoUrl(AuthUserInfoEntity userInfoEntity) {
        return MessageFormat.format(WECHAT_USER_INFO_PATTERN, AuthSource.WECHAT.userInfo(), userInfoEntity.getAccessToken(), userInfoEntity.getOpenId());
    }

    @Override
智布道's avatar
智布道 已提交
35
    public String getAuthorizeUrl() {
36 37 38 39
        return MessageFormat.format(WECHAT_AUTHORIZE_PATTERN, AuthSource.WECHAT.authorize(), config.getClientId(), config.getRedirectUri(), this.getRealState(config.getState()));
    }

    @Override
智布道's avatar
智布道 已提交
40 41
    public String getRefreshUrl(String refreshToken) {
        return MessageFormat.format(WECHAT_REFRESH_TOKEN_PATTERN, AuthSource.WECHAT.refresh(), config.getClientId(), refreshToken);
42 43 44
    }

    @Override
智布道's avatar
智布道 已提交
45
    public String getRevokeUrl(String accessToken) {
智布道's avatar
智布道 已提交
46
        throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
47 48
    }
}