OAuthAuthorizeParams

@Serializable
data class OAuthAuthorizeParams(val clientId: String, val redirectUri: String, val state: String? = null, val scope: String? = null, val responseType: String = "code", val codeChallenge: String? = null, val codeChallengeMethod: String? = null)

OAuth 授权 URL 参数 用于生成 OAuth 授权 URL 的参数(OAuth 流程)

官方文档:vds-docs/VDS 账户/授权端点(Authorize,account.sso.authorize).md

参数说明:

  • clientId: 应用 ID(格式 vap_xxxx),对应 OAuth 协议的 client_id

  • redirectUri: 授权后重定向 URI

  • 必须是已在开放平台配置的回调地址

  • 必须与令牌交换时使用的 redirect_uri 一致

  • state: 可选的状态参数,用于防止 CSRF 攻击

  • 建议使用随机字符串

  • 回调时会原样返回此参数

  • scope: 可选的权限范围

  • 多个权限用空格分隔

  • 如 "user.profile user.email"

  • responseType: 响应类型,固定为 "code"

  • codeChallenge: 可选的 PKCE code_challenge

  • 使用 SHA256 哈希 code_verifier 并进行 base64url 编码

  • 用于增强移动端和 Web 应用的安全性

  • codeChallengeMethod: 可选的 PKCE code_challenge_method,默认为 "SHA256"

使用示例:

val params = OAuthAuthorizeParams(
clientId = "vap_xxxxx",
redirectUri = "http://localhost:8080/callback",
state = "random_" + Random.nextLong(),
scope = "user.profile",
codeChallenge = "generated_challenge",
codeChallengeMethod = "SHA256"
)
val authorizeUrl = authManager.getOAuthAuthorizeUrl(params)

Constructors

Link copied to clipboard
constructor(clientId: String, redirectUri: String, state: String? = null, scope: String? = null, responseType: String = "code", codeChallenge: String? = null, codeChallengeMethod: String? = null)

Properties

Link copied to clipboard

应用 ID(格式 vap_xxxx)

Link copied to clipboard
@SerialName(value = "code_challenge")
val codeChallenge: String? = null

可选的 PKCE code_challenge

Link copied to clipboard
@SerialName(value = "code_challenge_method")
val codeChallengeMethod: String? = null

可选的 PKCE code_challenge_method,默认为 "SHA256"

Link copied to clipboard

授权后重定向 URI

Link copied to clipboard

响应类型,默认为 "code"

Link copied to clipboard
val scope: String? = null

可选的权限范围

Link copied to clipboard
val state: String? = null

可选的状态参数,用于防止 CSRF 攻击