提交 d338e1bb 编写于 作者: 智布道's avatar 智布道 👁

🎨 facebook 支持自定义 scope

上级 e11b8aff
...@@ -6,6 +6,7 @@ import lombok.Getter; ...@@ -6,6 +6,7 @@ import lombok.Getter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 边度平台 OAuth 授权范围 * 边度平台 OAuth 授权范围
...@@ -42,7 +43,7 @@ public enum AuthBaiduScope implements AuthScope { ...@@ -42,7 +43,7 @@ public enum AuthBaiduScope implements AuthScope {
return defaultScopes; return defaultScopes;
} }
public static List<AuthScope> listAll() { public static List<String> listScope() {
return Arrays.asList(AuthBaiduScope.values()); return Arrays.stream(AuthBaiduScope.values()).map(AuthBaiduScope::getScope).collect(Collectors.toList());
} }
} }
...@@ -6,6 +6,7 @@ import lombok.Getter; ...@@ -6,6 +6,7 @@ import lombok.Getter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* Coding平台 OAuth 授权范围 * Coding平台 OAuth 授权范围
...@@ -43,7 +44,7 @@ public enum AuthCodingScope implements AuthScope { ...@@ -43,7 +44,7 @@ public enum AuthCodingScope implements AuthScope {
return defaultScopes; return defaultScopes;
} }
public static List<AuthScope> listAll() { public static List<String> listScope() {
return Arrays.asList(AuthCodingScope.values()); return Arrays.stream(AuthCodingScope.values()).map(AuthCodingScope::getScope).collect(Collectors.toList());
} }
} }
...@@ -108,7 +108,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest { ...@@ -108,7 +108,7 @@ public class AuthBaiduRequest extends AuthDefaultRequest {
.queryParam("client_id", config.getClientId()) .queryParam("client_id", config.getClientId())
.queryParam("redirect_uri", config.getRedirectUri()) .queryParam("redirect_uri", config.getRedirectUri())
.queryParam("display", "popup") .queryParam("display", "popup")
.queryParam("scope", this.getScopes(" ", false, AuthBaiduScope.getDefaultScopes())) .queryParam("scope", this.getScopes(" ", true, AuthBaiduScope.getDefaultScopes()))
.queryParam("state", getRealState(state)) .queryParam("state", getRealState(state))
.build(); .build();
} }
......
...@@ -15,6 +15,7 @@ import me.zhyd.oauth.model.AuthToken; ...@@ -15,6 +15,7 @@ import me.zhyd.oauth.model.AuthToken;
import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.utils.*; import me.zhyd.oauth.utils.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -281,18 +282,17 @@ public abstract class AuthDefaultRequest implements AuthRequest { ...@@ -281,18 +282,17 @@ public abstract class AuthDefaultRequest implements AuthRequest {
// 默认为空格 // 默认为空格
separator = " "; separator = " ";
} }
List<AuthScope> scopes = config.getScopes(); List<String> scopes = config.getScopes();
if (null == scopes || scopes.isEmpty()) { if (null == scopes || scopes.isEmpty()) {
if (null == defaultScopes || defaultScopes.isEmpty()) { if (null == defaultScopes || defaultScopes.isEmpty()) {
return null; return "";
}
scopes = new ArrayList<>();
for (AuthScope defaultScope : defaultScopes) {
scopes.add(defaultScope.getScope());
} }
scopes = defaultScopes;
}
StringBuilder res = new StringBuilder();
for (AuthScope scope : scopes) {
res.append(scope.getScope()).append(separator);
} }
String scopeStr = res.deleteCharAt(res.length() - separator.length()).toString(); String scopeStr = String.join(separator, scopes);
return encode ? UrlUtil.urlEncode(scopeStr) : scopeStr; return encode ? UrlUtil.urlEncode(scopeStr) : scopeStr;
} }
......
...@@ -5,6 +5,7 @@ import me.zhyd.oauth.cache.AuthStateCache; ...@@ -5,6 +5,7 @@ import me.zhyd.oauth.cache.AuthStateCache;
import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.config.AuthDefaultSource; import me.zhyd.oauth.config.AuthDefaultSource;
import me.zhyd.oauth.enums.AuthUserGender; import me.zhyd.oauth.enums.AuthUserGender;
import me.zhyd.oauth.enums.scope.AuthFacebookScope;
import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.exception.AuthException;
import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthToken;
...@@ -95,4 +96,18 @@ public class AuthFacebookRequest extends AuthDefaultRequest { ...@@ -95,4 +96,18 @@ public class AuthFacebookRequest extends AuthDefaultRequest {
throw new AuthException(object.getJSONObject("error").getString("message")); throw new AuthException(object.getJSONObject("error").getString("message"));
} }
} }
/**
* 返回带{@code state}参数的授权url,授权回调时会带上这个{@code state}
*
* @param state state 验证授权流程的参数,可以防止csrf
* @return 返回授权地址
*/
@Override
public String authorize(String state) {
String authorizeUrl = super.authorize(state);
return UrlBuilder.fromBaseUrl(authorizeUrl)
.queryParam("scope", this.getScopes(",", false, AuthFacebookScope.getDefaultScopes()))
.build();
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册