1. 添加新的正式环境的secret配置信息。
2. 动态回调地址,如果是钉钉应用则用对应的回调地址。 3. 高频错误评查点改成显示出错次数。 4. 添加开关的通用组件,评查点列表方便修改状态。
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user