parent
450ca8f907
commit
b365b40273
|
@ -15,16 +15,23 @@ import java.lang.reflect.Method;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 第三方授权拓展 request 工厂类
|
* 第三方授权拓展 request 工厂类
|
||||||
* (为使得拓展配置和默认配置齐平,自定义本工厂类)
|
* 为使得拓展配置 {@link AuthConfig} 和默认配置齐平,所以自定义本工厂类
|
||||||
*
|
*
|
||||||
* @author timfruit
|
* @author timfruit
|
||||||
* @date 2021-10-31
|
* @date 2021-10-31
|
||||||
*/
|
*/
|
||||||
|
// TODO @timfruit:单测
|
||||||
public class YudaoAuthRequestFactory extends AuthRequestFactory {
|
public class YudaoAuthRequestFactory extends AuthRequestFactory {
|
||||||
|
|
||||||
protected JustAuthProperties properties;
|
protected JustAuthProperties properties;
|
||||||
protected AuthStateCache authStateCache;
|
protected AuthStateCache authStateCache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 由于父类 configureHttpConfig 方法是 private 修饰,所以获取后,进行反射调用
|
||||||
|
*/
|
||||||
|
private final Method configureHttpConfigMethod = ReflectUtil.getMethod(AuthRequestFactory.class,
|
||||||
|
"configureHttpConfig", String.class, AuthConfig.class, JustAuthProperties.JustAuthHttpConfig.class);
|
||||||
|
|
||||||
public YudaoAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
|
public YudaoAuthRequestFactory(JustAuthProperties properties, AuthStateCache authStateCache) {
|
||||||
super(properties, authStateCache);
|
super(properties, authStateCache);
|
||||||
this.properties = properties;
|
this.properties = properties;
|
||||||
|
@ -38,20 +45,17 @@ public class YudaoAuthRequestFactory extends AuthRequestFactory {
|
||||||
* @return {@link AuthRequest}
|
* @return {@link AuthRequest}
|
||||||
*/
|
*/
|
||||||
public AuthRequest get(String source) {
|
public AuthRequest get(String source) {
|
||||||
//先尝试获取自定义扩展的
|
// 先尝试获取自定义扩展的
|
||||||
AuthRequest authRequest = getExtendRequest(source);
|
AuthRequest authRequest = getExtendRequest(source);
|
||||||
|
// 找不到,使用默认拓展
|
||||||
if (authRequest == null) {
|
if (authRequest == null) {
|
||||||
authRequest = super.get(source);
|
authRequest = super.get(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
return authRequest;
|
return authRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected AuthRequest getExtendRequest(String source) {
|
protected AuthRequest getExtendRequest(String source) {
|
||||||
AuthExtendSource authExtendSource;
|
AuthExtendSource authExtendSource;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
authExtendSource = EnumUtil.fromString(AuthExtendSource.class, source.toUpperCase());
|
authExtendSource = EnumUtil.fromString(AuthExtendSource.class, source.toUpperCase());
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
@ -59,19 +63,18 @@ public class YudaoAuthRequestFactory extends AuthRequestFactory {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 拓展配置和默认配置齐平,properties放在一起
|
// 拓展配置和默认配置齐平,properties 放在一起
|
||||||
AuthConfig config = properties.getType().get(authExtendSource.name());
|
AuthConfig config = properties.getType().get(authExtendSource.name());
|
||||||
// 找不到对应关系,直接返回空
|
// 找不到对应关系,直接返回空
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 配置 http config
|
// 配置 http config
|
||||||
Method method = ReflectUtil.getMethod(AuthRequestFactory.class, "configureHttpConfig",
|
ReflectUtil.invoke(this, configureHttpConfigMethod,
|
||||||
String.class, AuthConfig.class, JustAuthProperties.JustAuthHttpConfig.class);
|
|
||||||
ReflectUtil.invoke(this, method,
|
|
||||||
authExtendSource.name(), config, properties.getHttpConfig());
|
authExtendSource.name(), config, properties.getHttpConfig());
|
||||||
|
|
||||||
|
// 获得拓展的 Request
|
||||||
|
// noinspection SwitchStatementWithTooFewBranches
|
||||||
switch (authExtendSource) {
|
switch (authExtendSource) {
|
||||||
case WECHAT_MINI_PROGRAM:
|
case WECHAT_MINI_PROGRAM:
|
||||||
return new AuthWeChatMiniProgramRequest(config, authStateCache);
|
return new AuthWeChatMiniProgramRequest(config, authStateCache);
|
||||||
|
|
|
@ -3,16 +3,19 @@ package cn.iocoder.yudao.framework.social.core.enums;
|
||||||
import me.zhyd.oauth.config.AuthSource;
|
import me.zhyd.oauth.config.AuthSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拓展JustAuth各api需要的url, 用枚举类分平台类型管理<br>
|
* 拓展JustAuth各api需要的url, 用枚举类分平台类型管理
|
||||||
*
|
*
|
||||||
* 默认配置{@link me.zhyd.oauth.config.AuthDefaultSource}
|
* 默认配置 {@link me.zhyd.oauth.config.AuthDefaultSource}
|
||||||
|
*
|
||||||
|
* @author timfruit
|
||||||
*/
|
*/
|
||||||
public enum AuthExtendSource implements AuthSource {
|
public enum AuthExtendSource implements AuthSource {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信小程序授权登录
|
* 微信小程序授权登录
|
||||||
*/
|
*/
|
||||||
WECHAT_MINI_PROGRAM{
|
WECHAT_MINI_PROGRAM {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String authorize() {
|
public String authorize() {
|
||||||
// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
|
// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
## 微信公众号
|
||||||
|
|
||||||
|
参考文章:https://www.yuque.com/docs/share/0e2966dd-89f8-4b69-980d-b876168725df
|
||||||
|
|
||||||
|
① 访问 social-login.html 选择【微信公众号】
|
||||||
|
|
||||||
|
② 微信公众号授权完成后,跳转回 social-login2.html,输入手机号 + 密码,进行绑定
|
||||||
|
|
||||||
|
## 微信小程序
|
||||||
|
|
||||||
|
参考文章:https://www.yuque.com/docs/share/88e3d30a-6830-45fc-8c25-dae485aef3aa
|
||||||
|
|
||||||
|
① 暂时使用 mini-program-test 项目
|
Loading…
Reference in New Issue