Class: EasyAI::Auth::AuthClaude
- Inherits:
-
Object
- Object
- EasyAI::Auth::AuthClaude
- Defined in:
- lib/easyai/auth/authclaude.rb
Constant Summary collapse
- SERVICE_NAME =
常量定义
"Claude Code-credentials"- TOKEN_KEY =
"CLAUDE_CODE_OAUTH_TOKEN"- ALT_TOKEN_KEY =
"ANTHROPIC_AUTH_TOKEN"- CLAUDE_JSON_PATH =
File.("~/.claude.json")
Class Method Summary collapse
Class Method Details
.configure(config, user_name = nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/easyai/auth/authclaude.rb', line 16 def self.configure(config, user_name = nil) return false unless config # 第一步:清理系统环境,确保干净的运行环境 clean_system_environment # 检查认证配置优先级 keychain_exists = macos? && config["key_chain"] && config["key_chain"]["claudeAiOauth"] && config["key_chain"]["service_name"] # 检查两种可能的令牌键 env_token_exists = config["env"] && (config["env"][TOKEN_KEY] || config["env"][ALT_TOKEN_KEY]) # 如果使用 Keychain,需要将令牌从 Keychain 读取到配置中 if keychain_exists token_from_keychain = get_token_from_keychain(config["key_chain"]["service_name"]) if token_from_keychain config["env"] ||= {} config["env"][TOKEN_KEY] = token_from_keychain end end # 根据优先级确定认证方法 if keychain_exists configure_keychain(config) clean_env_variables elsif env_token_exists verify_token_config(config) clean_keychain if macos? else # 先检查环境变量中是否已有令牌 token = check_env_tokens if token.nil? || token.empty? # 环境变量中没有,才提示用户输入 token = prompt_for_token return false if token.nil? || token.empty? else log_verbose(" ✓ 使用环境变量中的令牌") end # 将令牌添加到配置中进行处理 # 如果配置中已经有 ANTHROPIC_AUTH_TOKEN,使用该键;否则使用 CLAUDE_CODE_OAUTH_TOKEN config["env"] ||= {} if config["env"][ALT_TOKEN_KEY] config["env"][ALT_TOKEN_KEY] = token else config["env"][TOKEN_KEY] = token end verify_token_config(config) clean_keychain end # 更新 ~/.claude.json 文件 update_claude_json(config) if config["claude_json"] # 配置代理设置 configure_proxy(config) if config["claude_proxy"] true end |