diff --git a/src/main/java/me/zhyd/oauth/enums/scope/AuthLinkedinScope.java b/src/main/java/me/zhyd/oauth/enums/scope/AuthLinkedinScope.java new file mode 100644 index 0000000000000000000000000000000000000000..8b7068ef28d9bc9c1e9f002619075724f3c2d2d0 --- /dev/null +++ b/src/main/java/me/zhyd/oauth/enums/scope/AuthLinkedinScope.java @@ -0,0 +1,62 @@ +package me.zhyd.oauth.enums.scope; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 领英平台 OAuth 授权范围 + * + * @author yadong.zhang (yadong.zhang0415(a)gmail.com) + * @version 1.0.0 + * @since 1.0.0 + */ +@Getter +@AllArgsConstructor +public enum AuthLinkedinScope implements AuthScope { + + /** + * {@code scope} 含义,以{@code description} 为准 + */ + R_LITEPROFILE("r_liteprofile", "Use your name, headline, and photo", true), + R_EMAILADDRESS("r_emailaddress", "Use the primary email address associated with your LinkedIn account", true), + W_MEMBER_SOCIAL("w_member_social", "Post, comment and like posts on your behalf", true), + R_MEMBER_SOCIAL("r_member_social", "Retrieve your posts, comments, likes, and other engagement data", false), + R_AD_CAMPAIGNS("r_ad_campaigns", "View advertising campaigns you manage", false), + R_ADS("r_ads", "Retrieve your advertising accounts", false), + R_ADS_LEADGEN_AUTOMATION("r_ads_leadgen_automation", "Access your Lead Gen Forms and retrieve leads", false), + R_ADS_REPORTING("r_ads_reporting", "Retrieve reporting for your advertising accounts", false), + R_BASICPROFILE("r_basicprofile", "Use your basic profile including your name, photo, headline, and current positions", false), + R_ORGANIZATION_SOCIAL("r_organization_social", "Retrieve your organizations' posts, including any comments, likes and other engagement data", false), + RW_AD_CAMPAIGNS("rw_ad_campaigns", "Manage your advertising campaigns", false), + RW_ADS("rw_ads", "Manage your advertising accounts", false), + RW_COMPANY_ADMIN("rw_company_admin", "For V1 callsManage your organization's page and post updates", false), + RW_DMP_SEGMENTS("rw_dmp_segments", "Create and manage your matched audiences", false), + RW_ORGANIZATION_ADMIN("rw_organization_admin", "Manage your organizations' pages and retrieve reporting data", false), + RW_ORGANIZATION("rw_organization", "For V2 callsManage your organization's page and post updates", false), + W_ORGANIZATION_SOCIAL("w_organization_social", "Post, comment and like posts on your organization's behalf", false), + W_SHARE("w_share", "Post updates to LinkedIn as you", false); + + private String scope; + private String description; + private boolean isDefault; + + public static List getDefaultScopes() { + AuthLinkedinScope[] scopes = AuthLinkedinScope.values(); + List defaultScopes = new ArrayList<>(); + for (AuthLinkedinScope scope : scopes) { + if (scope.isDefault()) { + defaultScopes.add(scope); + } + } + return defaultScopes; + } + + public static List listScope() { + return Arrays.stream(AuthLinkedinScope.values()).map(AuthLinkedinScope::getScope).collect(Collectors.toList()); + } +} diff --git a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java index 0ec43a8b5e71b87db3eb57f311155263a3e3f2cc..a4e9068b3ed28c27c0e58323ab18d0f911d55781 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthLinkedinRequest.java @@ -8,15 +8,13 @@ import com.xkcoding.http.support.HttpHeader; import me.zhyd.oauth.cache.AuthStateCache; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.config.AuthDefaultSource; -import me.zhyd.oauth.enums.AuthResponseStatus; import me.zhyd.oauth.enums.AuthUserGender; +import me.zhyd.oauth.enums.scope.AuthLinkedinScope; import me.zhyd.oauth.exception.AuthException; import me.zhyd.oauth.model.AuthCallback; -import me.zhyd.oauth.model.AuthResponse; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.utils.HttpUtils; -import me.zhyd.oauth.utils.StringUtils; import me.zhyd.oauth.utils.UrlBuilder; @@ -204,7 +202,7 @@ public class AuthLinkedinRequest extends AuthDefaultRequest { .queryParam("response_type", "code") .queryParam("client_id", config.getClientId()) .queryParam("redirect_uri", config.getRedirectUri()) - .queryParam("scope", "r_liteprofile%20r_emailaddress%20w_member_social") + .queryParam("scope", this.getScopes(" ", false, AuthLinkedinScope.getDefaultScopes())) .queryParam("state", getRealState(state)) .build(); }