AuthDefaultUrlBuilder.java 2.5 KB
Newer Older
1 2
package me.zhyd.oauth.url;

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

/**
 * @author yadong.zhang (yadong.zhang0415(a)gmail.com)
 * @version 1.0
 * @since 1.8
 */
智布道's avatar
智布道 已提交
14
public abstract class AuthDefaultUrlBuilder {
15

智布道's avatar
智布道 已提交
16 17
    protected AuthConfig config;

18 19 20
    /**
     * 获取AccessToken的URL
     *
智布道's avatar
智布道 已提交
21
     * @param code 第三方平台返回的code
22 23
     * @return AccessTokenUrl
     */
智布道's avatar
智布道 已提交
24
    public abstract String getAccessTokenUrl(String code);
25 26 27 28

    /**
     * 获取用户信息的URL
     *
智布道's avatar
智布道 已提交
29
     * @param userInfoEntity 传递生成 UserInfoUrl 必须的参数
30 31 32 33 34 35 36 37 38
     * @return UserInfoUrl
     */
    public abstract String getUserInfoUrl(AuthUserInfoEntity userInfoEntity);

    /**
     * 获取跳转授权页面的URL
     *
     * @return AuthorizeUrl
     */
智布道's avatar
智布道 已提交
39
    public abstract String getAuthorizeUrl();
40 41 42 43

    /**
     * 获取刷新token的URL
     *
智布道's avatar
智布道 已提交
44
     * @param refreshToken 授权后取得的refresh token
45 46
     * @return RefreshUrl
     */
智布道's avatar
智布道 已提交
47
    public abstract String getRefreshUrl(String refreshToken);
48 49 50 51

    /**
     * 获取取消授权的URL
     *
智布道's avatar
智布道 已提交
52
     * @param accessToken 授权后的token
53 54
     * @return RevokeUrl
     */
智布道's avatar
智布道 已提交
55
    public abstract String getRevokeUrl(String accessToken);
56

57 58 59
    /**
     * 获取openId的地址,目前只有qq平台需要,故不需要子类强制重写
     *
智布道's avatar
智布道 已提交
60 61 62 63 64
     * @param accessToken 用户授权后返回的accesstoken
     * @param unionid     是否需要申请unionid,目前只针对qq登录
     *                    注:qq授权登录时,获取unionid需要单独发送邮件申请权限。如果个人开发者账号中申请了该权限,可以将该值置为true,在获取openId时就会同步获取unionId
     *                    参考链接:http://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D
     * @return openIdUrl
65 66
     */
    public String getOpenIdUrl(String accessToken, boolean unionid) {
智布道's avatar
智布道 已提交
67
        throw new AuthException(AuthResponseStatus.NOT_IMPLEMENTED);
68 69
    }

70 71 72
    /**
     * 获取state,如果为空, 则默认去当前日期的时间戳
     *
智布道's avatar
智布道 已提交
73 74
     * @param state 原始的state
     * @return 返回不为null的state
75 76 77 78
     */
    protected String getRealState(String state) {
        return StringUtils.isEmpty(state) ? String.valueOf(System.currentTimeMillis()) : state;
    }
智布道's avatar
智布道 已提交
79 80 81 82

    public void setAuthConfig(AuthConfig config) {
        this.config = config;
    }
83
}