accessToken.go
package main
import (
"crypto/md5"
"encoding/base64"
"fmt"
"io"
"net/url"
"sort"
"strings"
)
// 生成签名
func generateSign(params url.Values, app_secret string) (sign string){
// 1.取出所有的key
var keys []string
for k := range params{
keys = append(keys, k)
}
// 对字符串切片排序
sort.Strings(keys)
// 拼接字符串, 首尾加上下划线_
var stringA string
for _, k := range keys{
stringA = strings.Join([]string{stringA, fmt.Sprintf("%v%v", k, params[k][0] )}, "")
}
// 首尾加上下划线_, 再加上app_secret
stringA = fmt.Sprintf("%v_%v_%v", app_secret , stringA, app_secret)
// md5后得到签名sign
h := md5.New()
io.WriteString(h, stringA)
sign = fmt.Sprintf("%x", h.Sum(nil))
return
}
// 生成access-token
func GenerateAccessToken(params url.Values, router, app_key, app_secret string) (access_token string) {
// 生成签名
sign := generateSign(params, app_secret)
var param string = fmt.Sprintf("%v:%v:%v", app_key, sign, router)
// base64加密
access_token = base64.StdEncoding.EncodeToString([]byte(param))
return
}
main.go
package main
import (
"fmt"
"gopkg.in/ini.v1"
"io/ioutil"
"log"
"net/http"
"net/url"
)
var App_key string
var App_secret string
// 读取配置文件
func readConfig()(app_key, app_secret string){
cfg, err := ini.Load("douyin/config.ini")
if err != nil {
panic(err)
}
app_key = cfg.Section("qingbo").Key("app_key").String()
app_secret = cfg.Section("qingbo").Key("app_secret").String()
return
}
func main() {
App_key, App_secret = readConfig()
res := getAccessDetails("110814649")
fmt.Println(res)
}
// 抖音账号详情
func getAccessDetails(douyin_code string) string {
router := "/account/douyin/attribute"
params := make(url.Values)
params.Add("douyin_code", douyin_code)
access_token := GenerateAccessToken(params, router, App_key, App_secret)
request, err := http.NewRequest(http.MethodGet, "http://databus.gsdata.cn:8888/api/service", nil)
getErr(err)
request.URL.RawQuery = params.Encode()
request.Header.Add("access-token", access_token)
resp, err := http.DefaultClient.Do(request)
getErr(err)
defer resp.Body.Close()
data, err := ioutil.ReadAll(resp.Body)
return string(data)
}
func getErr(err error){
if err != nil {
log.Println("-----------------------------------------------------")
log.Println(err)
log.Println("-----------------------------------------------------")
}
}
有疑问加站长微信联系(非本文作者)