package main
import (
"bytes"
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
)
const (
message = "1590758162406"
secret = "***"
)
// 签名
func ComputeHmacSha256(message string, secret string) string {
key := []byte(secret)
h := hmac.New(sha256.New, key)
h.Write([]byte(message))
sha := h.Sum(nil)
return base64.StdEncoding.EncodeToString([]byte(sha))
}
func main() {
timestamp := "1591001036442"
hash := ComputeHmacSha256(timestamp, secret)
fmt.Println(hash)
signature := url.QueryEscape(hash)
fmt.Println(signature)
ddCode := "45e7d7c51b5539698a08de0673eaf456"
song := make(map[string]interface{})
song["tmp_auth_code"] = ddCode
bytesData, err := json.Marshal(song)
if err != nil {
fmt.Println(err.Error())
return
}
data := bytes.NewReader(bytesData)
appid := "***"
fmt.Println(data)
resp, err := http.Post("https://oapi.dingtalk.com/sns/getuserinfo_bycode?accessKey="+appid+"×tamp="+timestamp+"&signature="+signature, "application/json", data)
fmt.Println(resp)
fmt.Println(err)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(body))
}