idleuncle
9/5/2018 - 1:17 PM

微信编程样例

微信编程样例

#!/bin/bash

: ${APPID:='wxfd6818e064c7db21'}
: ${APPSECRET:='92c882c1e44e74dd460967d2c791abef'}
: ${ACCESS_TOKEN:=}

array_get(){
  local a=($(echo $1))
  local i=$2
  #echo ${a[@]:${i}:1}
  echo ${a[@]:0:1}
}

weixin-get-access-token(){
  if [ "${ACCESS_TOKEN}" == "" ]; then
    echo "curl \"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}\" | jq '.access_token' | sed 's/\"//g'"
    access_token=$(curl "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}" | jq '.access_token' | sed 's/\"//g')
    export ACCESS_TOKEN=${access_token}
  else
    access_token=${ACCESS_TOKEN}
  fi
  echo ${access_token} 
}

weixin-get-users(){
  local _access_token=$1
  local _data=$(curl "https://api.weixin.qq.com/cgi-bin/user/get?access_token=${_access_token}&next_openid=")

  local _total_a=($(echo ${_data} | jq '.total'))
  local _count_a=($(echo ${_data} | jq '.count'))
  local _users_a=($(echo $(echo ${_data} | jq '.data.openid' | sed -E 's/[,\"]/\n/g' | sed -E 's/\[//g'  | sed -E 's/\]//g')))

  local _usersinfo=(${_total_a[@]} ${_count_a[@]} ${_users_a[@]})
  echo ${_usersinfo[@]}
}

weixin-get-userinfo(){
  local _access_token=$1
  local _openid=$2
  local _data=$(curl "https://api.weixin.qq.com/cgi-bin/user/info?access_token=${_access_token}&openid=${_openid}")
  echo ${_data}
}

main(){
  local access_token=$(echo $(weixin-get-access-token))
  echo "Get Access Token: " ${access_token}

  local usersinfo=($(echo $(weixin-get-users ${access_token})))
  local total=${usersinfo[@]:0:1}
  local count=${usersinfo[@]:1:1}
  #local total=$(array_get ${usersinfo[@]} 0)
  #local count=$(array_get ${usersinfo[@]} 1)
  local users=($(echo ${usersinfo[@]:2}))

  echo ${total}
  echo ${count}
  echo ${#users[@]}
  echo ${users[@]}
  for user in ${users[@]}; do
    echo ${user}
    local userinfo=$(weixin-get-userinfo ${access_token} ${user})
    echo ${userinfo} | jq
  done
}

main