91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
package auth
|
||
|
||
import (
|
||
"bytes"
|
||
"crypto/sha256"
|
||
"encoding/hex"
|
||
"encoding/json"
|
||
"fmt"
|
||
"github.com/google/uuid"
|
||
"io"
|
||
"net/http"
|
||
"strconv"
|
||
"time"
|
||
)
|
||
|
||
//新建请求体对象
|
||
|
||
func newReqUdeskToken() RequestUdeskBody {
|
||
return RequestUdeskBody{
|
||
Email: Email,
|
||
Password: Password,
|
||
}
|
||
}
|
||
|
||
// 新建返回体对象
|
||
func newRespUdeskBody() UdeskToken {
|
||
return UdeskToken{
|
||
Code: "",
|
||
Open_api_auth_token: "",
|
||
}
|
||
}
|
||
|
||
//获取Unix时间戳
|
||
|
||
func GetTimeStamp() string {
|
||
return strconv.FormatInt(time.Now().Unix(), 10)
|
||
}
|
||
|
||
//获取nonce
|
||
|
||
func GetNonce() string {
|
||
randomUUID := uuid.New()
|
||
nonce := randomUUID.String()
|
||
return nonce
|
||
}
|
||
|
||
// sha256转换函数
|
||
func calculateSHA256(input string) string {
|
||
// 将字符串转换为字节数组
|
||
inputBytes := []byte(input)
|
||
|
||
// 创建SHA-256哈希对象
|
||
hasher := sha256.New()
|
||
|
||
// 将字节数组写入哈希对象
|
||
hasher.Write(inputBytes)
|
||
|
||
// 计算哈希值并返回
|
||
hashInBytes := hasher.Sum(nil)
|
||
hashString := hex.EncodeToString(hashInBytes)
|
||
|
||
return hashString
|
||
}
|
||
|
||
// 获取鉴权token对象
|
||
|
||
func GetUdeskAuthToken() UdeskToken {
|
||
reqBody := newReqUdeskToken()
|
||
jsonData, err := json.Marshal(reqBody)
|
||
if err != nil {
|
||
fmt.Printf("获取udesk管理员token过程中转换请求体json失败,错误是:%v", err)
|
||
}
|
||
payload := bytes.NewBufferString(string(jsonData))
|
||
resp, err := http.Post(Auth_token_url, "application/json", payload)
|
||
if err != nil {
|
||
fmt.Printf("获取udesk管理员token过程中请求获取token接口失败,错误是:%v", err)
|
||
}
|
||
defer func(Body io.ReadCloser) {
|
||
err := Body.Close()
|
||
if err != nil {
|
||
return
|
||
}
|
||
}(resp.Body)
|
||
body, err := io.ReadAll(resp.Body)
|
||
if err != nil {
|
||
fmt.Printf("获取udesk管理员token过程中获取token接口响应失败,错误是:%v", err)
|
||
}
|
||
json.Unmarshal(body, &u)
|
||
return u
|
||
}
|