#!/bin/bash # G5: wechat-activate.sh - 微信凭证检测 → 快速激活/完整安装 set -e echo "[WeChat] Starting WeChat activation..." # 检查环境变量 WECHAT_TOKEN="${WECHAT_TOKEN:-}" WECHAT_APPID="${WECHAT_APPID:-}" WECHAT_SECRET="${WECHAT_SECRET:-}" WECHAT_ENABLED="${WECHAT_ENABLED:-false}" # 微信凭证文件 CREDENTIALS_DIR="${OPENCLAW_STATE_DIR:-/root/.openclaw}/credentials" WECHAT_CRED_FILE="$CREDENTIALS_DIR/wechat.json" # 检查是否启用 if [ "$WECHAT_ENABLED" != "true" ]; then echo "[WeChat] WeChat integration disabled (WECHAT_ENABLED != true)" exit 0 fi # 检查凭证 if [ -z "$WECHAT_TOKEN" ] && [ -z "$WECHAT_APPID" ]; then echo "[WeChat] No WeChat credentials found, skipping activation" echo "[WeChat] To enable, set WECHAT_TOKEN or WECHAT_APPID+WECHAT_SECRET" exit 0 fi # 创建凭证目录 mkdir -p "$CREDENTIALS_DIR" # 快速激活模式 - 已有token if [ -n "$WECHAT_TOKEN" ]; then echo "[WeChat] Quick activation mode (using existing token)" cat > "$WECHAT_CRED_FILE" << EOF { "type": "wechat", "enabled": true, "mode": "quick", "token": "$WECHAT_TOKEN", "created_at": "$(date -Iseconds)" } EOF echo "[WeChat] Quick activation completed!" echo "[WeChat] Credentials saved to $WECHAT_CRED_FILE" # 完整安装模式 - 使用AppID和Secret elif [ -n "$WECHAT_APPID" ] && [ -n "$WECHAT_SECRET" ]; then echo "[WeChat] Full installation mode (using AppID + Secret)" # 获取access_token echo "[WeChat] Fetching access token..." TOKEN_RESPONSE=$(curl -s "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$WECHAT_APPID&secret=$WECHAT_SECRET" 2>/dev/null || echo '{}') ACCESS_TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r '.access_token // empty') EXPIRES_IN=$(echo "$TOKEN_RESPONSE" | jq -r '.expires_in // 7200') if [ -n "$ACCESS_TOKEN" ]; then echo "[WeChat] Access token obtained successfully" cat > "$WECHAT_CRED_FILE" << EOF { "type": "wechat", "enabled": true, "mode": "full", "app_id": "$WECHAT_APPID", "app_secret": "$WECHAT_SECRET", "access_token": "$ACCESS_TOKEN", "expires_in": $EXPIRES_IN, "created_at": "$(date -Iseconds)" } EOF echo "[WeChat] Full installation completed!" echo "[WeChat] Credentials saved to $WECHAT_CRED_FILE" # 获取公众号信息 echo "[WeChat] Fetching account info..." ACCOUNT_INFO=$(curl -s "https://api.weixin.qq.com/cgi-bin/account/getaccountbasicinfo?access_token=$ACCESS_TOKEN" 2>/dev/null || echo '{}') echo "[WeChat] Account info: $(echo "$ACCOUNT_INFO" | jq -r '.nickname // "unknown"')" else ERRMSG=$(echo "$TOKEN_RESPONSE" | jq -r '.errmsg // "Unknown error"') echo "[WeChat] Failed to get access token: $ERRMSG" exit 1 fi else echo "[WeChat] Insufficient credentials" echo "[WeChat] Provide either:" echo " - WECHAT_TOKEN (for quick activation)" echo " - WECHAT_APPID + WECHAT_SECRET (for full installation)" exit 1 fi echo "[WeChat] Activation process completed!"