File size: 3,176 Bytes
3d325be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/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!"