41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package feishu
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fusenapi/utils/curl"
|
|
"time"
|
|
)
|
|
|
|
type FeiShuApi struct {
|
|
AppId string
|
|
AppSecret string
|
|
ApiHost string
|
|
}
|
|
|
|
// 获取tenant_access_token
|
|
type GetTenantAccessTokenRsp struct {
|
|
Code int `json:"code"`
|
|
Msg string `json:"msg"`
|
|
TenantAccessToken string `json:"tenant_access_token"`
|
|
Expire int `json:"expire"`
|
|
}
|
|
|
|
func (f *FeiShuApi) GetTenantAccessToken() (resp GetTenantAccessTokenRsp, err error) {
|
|
url := f.ApiHost + "/open-apis/auth/v3/tenant_access_token/internal"
|
|
header := map[string]string{"Content-Type": "application/json; charset=utf-8"}
|
|
req := map[string]interface{}{
|
|
"app_secret": f.AppSecret,
|
|
"app_id": f.AppId,
|
|
}
|
|
postData, _ := json.Marshal(req)
|
|
rsp, err := curl.ApiCall2(url, "POST", header, bytes.NewReader(postData), time.Second*15)
|
|
if err != nil {
|
|
return GetTenantAccessTokenRsp{}, err
|
|
}
|
|
if err = json.Unmarshal(rsp, &resp); err != nil {
|
|
return GetTenantAccessTokenRsp{}, err
|
|
}
|
|
return resp, nil
|
|
}
|