1. 添加新的正式环境的secret配置信息。

2. 动态回调地址,如果是钉钉应用则用对应的回调地址。
3. 高频错误评查点改成显示出错次数。
4. 添加开关的通用组件,评查点列表方便修改状态。
This commit is contained in:
2026-01-19 16:22:21 +08:00
parent e332d05e5d
commit 1fca1a2e2e
8 changed files with 270 additions and 18 deletions
+25 -1
View File
@@ -43,6 +43,7 @@ interface UserInfoResponse {
export class OAuthClient {
private config: OAuthConfig;
private runtimeRedirectUri?: string; // 运行时回调地址(用于钉钉/内网动态切换)
constructor(config: OAuthConfig) {
this.config = {
@@ -64,6 +65,28 @@ export class OAuthClient {
}
}
/**
* 设置运行时回调地址(用于钉钉/内网动态切换)
* @param redirectUri 回调地址
*/
setRedirectUri(redirectUri: string): void {
this.runtimeRedirectUri = redirectUri;
console.log('🔧 [OAuthClient] 运行时回调地址已设置:', redirectUri);
}
/**
* 获取当前使用的回调地址
* 优先使用运行时设置的回调地址,否则使用配置中的默认地址
* @returns 回调地址
*/
private getRedirectUri(): string {
const uri = this.runtimeRedirectUri || this.config.redirectUri || '';
if (this.runtimeRedirectUri) {
console.log('🔧 [OAuthClient] 使用运行时回调地址:', uri);
}
return uri;
}
/**
* 生成授权URL
* @param state 状态值,建议包含随机字符串和_idp后缀
@@ -96,12 +119,13 @@ export class OAuthClient {
*/
async getAccessToken(code: string): Promise<TokenResponse | null> {
const url = `${this.config.serverUrl}/oauth/token`;
const redirectUri = this.getRedirectUri(); // 使用动态回调地址
const data = new URLSearchParams({
grant_type: 'authorization_code',
code: code,
client_id: this.config.clientId,
client_secret: this.config.clientSecret || '', // 提供默认值避免类型错误
redirect_uri: this.config.redirectUri
redirect_uri: redirectUri
});
console.log('🔧 请求Token URL:', url);