抖音授权,门店回调日志打印,定时九点半日志打印,小程序门店切换时不成功

This commit is contained in:
邹宗楠
2022-04-15 18:08:43 +08:00
parent ca3d08ba77
commit 81cf7752fd
5 changed files with 182 additions and 182 deletions

View File

@@ -16,8 +16,11 @@ func init() {
baseapi.Init(sugarLogger)
//api = New("de8157b447584885910f429011e49cb93yjq", "E1D746D42474D5F1F1A10CECE75D99F6", "efa7e1d1a22640fa990e6cf164b28608")
api = New("9ad9cf5fc8b140b19a1dbbb700b47676kown", "D5E8352BE0786ED16F77B4548F62F09A", "71e1061ac2f246f6ac27efb900edba12")
api.SetCookieWithStr(`
shshshfpa=b02d5da7-4399-dacb-d2af-dc8d6c460307-1606980337; shshshfpb=xasBIJG4GQtMArMLGnT8nqQ%3D%3D; UM_distinctid=17e421e35135b9-0570446b8f842a-3354487a-1fa400-17e421e3514257; user-key=fe50847a-cc2e-4494-bd7a-4e1cd1ec0324; areaId=22; pinId=WMIzMhF5BfKZPDIlG3adMQ; pin=shop_jxcs2021; unick=shop_jxcs2021; _tp=326SVoMf64R2LVMVFCEfiQ%3D%3D; _pst=shop_jxcs2021; PCSYCityID=CN_510000_510100_0; ipLoc-djd=22-1930-50948-57092; ceshi3.com=000; __jdu=1606964403676243720102; csrf_token=959385ad-4016-4b27-8fc2-64464f09c944; unpl=JF8EAKBnNSttCEkBVxhQTxVFS1RUWwkKGR9XPGIGUwgLSwdSHgYaFxl7XlVdXhRKEh9vZxRUXVNIVA4bBisSEXteXFZZDkoWAGZXNWReWHtVNRsFGhUYTFhRX18PTRAAamUDV1xYSlc1KwUbGyB7bVdWVQxMEABqZjVVbVpKVQYdCxMSEEJtHzBcRUsQAmhvAlFYWUlTAxwBHhAWSFxUX144SicA; __jdv=76161171|kong|t_299570028_|tuiguang|a3dc2ce6d1814e3c9eb426db1bf45048|1649647276250; bjd.advert.popup=5afaf4c2300fcde28c9d5a7582fdd73e; cn=1; shshshfp=50f73bc4e775836e11d201adab7ff646; language=zh_CN; ip_cityCode=1930; TrackID=1Q5P3-ullX0lQhmJdAIXwEIpUA3TIyGcmFdghZqHIYksZoVyEPpMxYDgIh0d8dfackJbRBfCxeMp-iuv3PHDKgMCbuVMeQZCK3ubapO6Fv6riDlcNfehEK-H8_i5QuF5v; __jda=191429163.1606964403676243720102.1606964404.1647847906.1648015537.156; __jdc=191429163; 3AB9D23F7A4B3C9B=3LXEVQM6COV5NINMQN77BN64JE2WJ76EIPRTIYTDM7GIU7BHDAMFOVQT7WP33PVNBO2DUGASISKUTTJX65DM4ZME3Y; _base_=YKH2KDFHMOZBLCUV7NSRBWQUJPBI7JIMU5R3EFJ5UDHJ5LCU7R2NILKK5UJ6GLA2RGYT464UKXAI4Z6HPCTN4UQM3WHVQ4ENFP57OC2XJVD24IJG4VRA63GZVNQY5IXRTCNE6YVKRXISVJLYYILNIP6OVKS3GKYL2ZCNGXSSG4SOQWCP5WPWO6EFS7HEHMRWVKBRVHB33TFD4SMNBHRJCTDFHU6SZXCZD6RFXX2OORYGL5H2GYF2IIH2KKD4T72IR4F577G2E5II2OMMXYF2GDYNTS7WGAUXFEWRJ3CTKDBDWMHUKJQF4ZFOTNBBYBIZRXZYERXXIG6ASC3D6DGS4WD4QQ5TAYF53SJ3SX7CBNYDPXFCM2ZEIMWTNGLNZHVJ3U6RK5ZBCQLZE; _vender_new_=GI63BGTJFDBQ5WAGCFF7AT6OU2UF5TDBCVVAW3W4ZGGIVOLTPK57TQKS6B2UAQGJ2CD7LXKS4Q7CWM2X5H63ED5FP7T7K3ABVJHQHYWNX4PRCUPH6XGAGN2CFHSWF22HF5JQJ4GWGC3NJSCESVRBTZGVLMVYTOT3TDDIV5MLM3NIPN5O5CIXUF5LOA44565AQ2JVMNVNKT7WMY6RWBASMJYKDSTITLP6WXMXJDJYMXAWOY2XWQCXI6RB3XVDWHR6HDOD2SNRC5NX4DRRYOYE7UGG7DZYIVI7Y64CIIPMRFBNWLLP3MQXERMDYTSLRPIZTIMGFR4OHOZ7HBC2QYY46IA63RLQ6O3BSIVFISTGB5TRZBQHZENZ3YT5J2L3PXJ3K4HTWYMSFJKEUZQPM4OIMB6JDMF6LW5NZEFZK5NO627VUSSP5BZYXV5DEZZGSFF6OIQDZKME7A4WZC3ZCVCJNC6FXJWD6YYUE3LXEPQ346CACIL4NDRACRE3LJQSJGPV573IWHJ6ILG44KW6UU4LPJ24MRVU4AJTEC7ZKG5EED5FFB6J75EI6C677TNCOUENHGGL4C5DB4GZZP3DAKLSSLIU5RJVBQR3GD2FEYBEME5BJ6CWEDNRA5DT4JO4DYMDBKDHJRLMZ34RB72SYFOC5RUCVACP2MTWIF57ZELWHUH4RK4HYT3A; _BELONG_CLIENT_=WPSC4XJXWK5USS4JNZY2X7VRLR5MCBKRSVHEXABGTHDGISIQK5YOLZUXYE7IOIM7MOKO74H6CRN6WHAAR4TMDV3XZWMXZRCRT5XRNE3V356BTOB2Y7LPK66VWQK6HPTGWVXIDXDCPVE3W5WMHAIO6AT2LX2XXVNUCXR34ZWFK6HY45CORGIKOSYDYZBF27WOKTUX6BS4FZMIJWNUX6CB4JAA25ZLF7ZEKYOO4QV5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BMTUJZACIBHXQFAVLRF76VQY5PNJGGJNBEZHSFYYJA3YORRT7FB5AHCOIFQKF3W5RWNUX6CB4JAA26JNMO7AYWNUPZF5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BWZDKMOJ5BS6II53ERY6ALV3ZWPF42L4CPUHEGPYIII35KDC4FCNVCORCXFD6IVNLBEDPB2GGP4UHWNRUDOQBDIW7RZJXBA2WV5ANZOTEGUCDWYRVQS2YUTIZNZ276PRYG4N56V6YTII7MBKBC7LYHO7C555HTSBXGNRM3E466AYN67DHWVM5HQFJ4NFDO5BSM2ARZ2CP7BZNHYHJTN2W4KTYUA; b-sec=S2JWP6CAFP7K4DTHFD36EP2AMQLBY2BVKWF7A3DQ7NFGDIC7II3OKWREQFGL3DVOBV5BJNHAM5IJI; thor=0067E0DF0B31013CB97AE7793EC6C972FD1F47E82C81CA371FEA19140EB6B5886558DE30A9B13F001E0F3CF06F304350C65490CB1F719FCF73ED070D6C2718A2983484F5E5C77F6D72A3D9F6A503B94FECE1369726094F7686F2A8860F6474BCEAEA97621D2692F509758D4680A01C0C422486594F7AE97BA78B325DEC2B59E944AFB5CFF692BFAB726197681AB9DA69`)
// api.SetCookie("thor", "5E1D1AE7BBC42FACA3496D9C54AF9F879CF4836860E75FF70BFCDEAC5A75C1C5E43030CF54E4A3A8F5E760492948E69B763D115FE234A59948BA538A4F7E18F38B80F818E28EAE71F1CF5BFE2D0DC456D56E8BEAEF10D398C709D9A4EB46923C7E63867435BD42996F1570A816FD1B0B247CD9756A1184DD61317D28BBF77F828691684AD6E60801B2BB38F9DE086D73")
api.SetCookieWithStr(`__jdu=16496474755891719920568; unpl=JF8EALNnNSttDU0HBElWE0BAQ1oHWw4KGEcLOmRRUVhQHlUBHlIeEBF7XlVdXhRKEh9vZxRUWFNIVQ4YBysSEXteU11bD00VB2xXVgQFDQ8WUUtBSUt-SF1UXVsJSxMHbG4GZG1bS2QFGjIbFRVDWlFYWA5PEwpnZwNUVVBIVQEcCysiF3ttZFpaCUMTC19mNVVtGh8IDRwGGhMQBl1TW1UPThEGaWMBXVVYTVQNEwEaFhdCbVVuXg; areaId=22; ipLoc-djd=22-1930-0-0; PCSYCityID=CN_510000_510100_0; __jdv=122270672|baidu|-|organic|notset|1649658041982; pinId=0P4L2K_8z11ZUOOc8Pyh4w; pin=jxc4liulei; unick=jxc4liulei; _tp=SNh2AuY0LCWg91owlmuS1Q%3D%3D; _pst=jxc4liulei; ceshi3.com=000; _vender_=TNK3O6PALVQGG3P24NJQFXSBHYQNFQDBDAAAFNJIJAECQG2WSQGU5RJ6KSCMVVQQRHQZD6AECSQT3YKKYMRQJDFZHEEPXXHCR3STQEL55G2S4OB7Q6QUPCVBRUAZKDRVRF2MP5BK57JOU57NKALCQQWNR5XRJWJ4AGVNOAVSZUQ4QLRQZLY62QPOMBQHAQAGNLFRNQDWAO2N2HSD33FC2BJBV3S3QAJEAEJCDK4QQCZD6R72KBKNNWCITHQ32SVZKLN526Z2KM5T3DCVCND4YAK4AZMYIVI7ULYSDQD34K63YVC2TN5AJHZFWVYZEQGPZ65I6MTWTEDVOTLQ5D2AY2PBT4JHYXKEV6DFST3FWH5NOTDOJY3IASEKA7SG6LJSRN63HAW554GZVREIKMQHQAC5IVI445ONJ6GMFECU4SNRFRAYRKKYNISVYBKRTNHJCGFX2442SELHC4MUUVLVNBKEDYTDRCC4ZMMDMWSG75UUSWWXISJA; wlfstk_smdl=91h55jyt5sfm1901tdbgehyi67o5iaor; language=zh_CN; TrackID=1oqBrsNfaNsPFZVtK-124Hk1wwpg113ZwmS2Cajw8VwRsb0RCE3ph1kEhr7BLLOhyaQ196cgJsdscvrvGuBRoZm_dfJ1RuXfLocegNnMjRM8; thor=01BA10CC3862D8315A8F658F7DD2838C910211F45B05336172446EFDFC25E684EB4B9A81E2F1012525DBB65E171F7F5049FBFB076DA4FAC0AE7898C136389DC95DE18C259981364B775EAB7385F4CFFB2BEA505D94D2C1B8D5899C421825A32F0E60967FBF20170B0F1F31A27F795E2C40F4F9A141DD7260894C5EA879FE0810E99DDEFFC34ED45459429571A06DB76E; b-sec=3XU3DWGGC3WZSRRUDORQHBODFJXKGJRSNQI4WVMLXDV5NBOUPIJGYAR6Q5ZBP3KGR7GY3A37P62ZS; __jda=191429163.16496474755891719920568.1649647476.1649658035.1649658042.4; __jdc=191429163; 3AB9D23F7A4B3C9B=CKENC5MAUU744ZQDKVRY2L7UIJ23PJRDYJ6HF3ZMQHC5FFD46FMUQXRINFCOC4SKHL5MU3PPNPP4C4AX5ZYBXJ7LZ4; _base_=YKH2KDFHMOZBLCUV7NSRBWQUJPBI7JIMU5R3EFJ5UDHJ5LCU7R2NILKK5UJ6GLA2RGYT464UKXAI5KK7PNC5B5UHJ2HVQ4ENFP57OC2XJVD24IJG4VRA63GZVNQY5IXRTCNE6YVKRXISVJLYYILNIP6OVKS3GKYL2ZCNGXSSG4SOQWCP5WPWO6EFS7HEHMRWVKBRVHB33TFD4SMNBHRJCTDFHU6SZXCZD6RFXX2OORYGL5H2GYF2IIH2KKD4T72IR4F577G2E5II2OMMXYF2GDYNTS7WGAUXFEWRJ3CTKDBDWMHUKJQF4ZFOTNBBYBIZRXZYERXXIG6ASWNF62HTTIQSOQAEZEGZNSDAGQWOFW3BKDHOZ5FDR4MS74LDWUDI4FNIT374F4VDI; _BELONG_CLIENT_=WPSC4XJXWK5USS4JNZY2X7VRLR5MCBKRSVHEXABGTHDGISIQK5YOLZUXYE7IOIM7MOKO74H6CRN6WHAAR4TMDV3XZWMXZRCRT5XRNE3V356BTOB2Y7LPK66VWQK6HPTGWVXIDXDCPVE3W5WMHAIO6AT2LX2XXVNUCXR34ZWFK6HY45CORGIKOSYDYZBF27WOKTUX6BS4FZMIJWNUX6CB4JAA25ZLF7ZEKYOO4QV5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BMTUJZACIBHXQFAVLRF76VQY5PNJGGJNBEZHSFYYJA3YORRT7FB5AHCOIFQKF3W5RWNUX6CB4JAA26JNMO7AYWNUPZF5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BWZDKMOJ5BS6II53ERY6ALV3ZWPF42L4CPUHEGPYIII35KDC4FCNVCORCXFD6IVNLBEDPB2GGP4UHWNRUDOQBDIW7RZJXBA2WV5ANZOTEGUCDWYRVQS2YUTIZNZ276PRYG4N56V6YTII7MBKBC7LYHO7C555HTSBXGNRM3E466AYN67DHWVM5HQFJ4NFDO5BSREF6DFQ4KIBNVW4OYQNH5G7P3A; _vender_new_=GI63BGTJFDBQ5WAGCFF7AT6OUYWYFPVBHAMTKOO3UVWYDSOEMFHDXQYGEAIFTLTM6ICNHRYEWG53Y3EUFLXVKLH6RMKWRM7G5WA6AFWSDWJGOQXV26K6RBZHAU5DFEA4TBIYSVY45F3GK7X3Q5FHPNMZOCRLURVOQKFM7B2D4BBXHS2QRSAAEO6RPWOL62CWNGPOHMGMAGVAJ77C4IC2ET3NVN6PBVCLI56OPZPR7RNFOAEYFZTP2BSCS5ZMNTWN4HIOX5NUKDT5EUE5QQ722X2U2H7DKPHIF7OHQ6IR4HMB5NA7ACWBHEXOENOEOZZIHVQJO7KJEXLBYIYCIDSN4MFK5XWTHEBPJHFWGJBRDK2VBA6IMVCSGASA4TPDBKXN5UZZAL2JZNRSJTR363NRPUBYOPSTMWNXIMF4UYZPUUZPLTJX56EXDHFSRQF3F4FZXK47M3A33GZHU6UCVEAOAOFE3CAHDO4DMIK7334CESHKG3LT2KSPPDT3GXU5UUQOJGGQTYURJRST3PF7U6LS5URX2WPD7XV3OBKJQ2C3NFHU35TKJPWKEJUIFFUHXPJBS6AEJ7JV4RL5QDPT7ZGGIHSED3ZCDW563MYWFUFFCNMWQEZXMPDHUOHRDBNSOWPCAI4ZR4B4NENJLWZUO3XKK4L3AUAJKICWYY6MNDA`)
//api.SetCookieWithStr(`language=zh_CN; Domain=.jd.com; Expires=Sat, 16-Apr-2022 09:49:40 GMT; Path=/`)
//api.SetCookieWithStr(`_base_=YKH2KDFHMOZBLCUV7NSRBWQUJPBI7JIMU5R3EFJ5UDHJ5LCU7R2NILKK5UJ6GLA2RGYT464UKXAI5KK7PNC5B5UHJ2HVQ4ENFP57OC2XJVD24IJG4VRA63GZVNQY5IXRTCNE6YVKRXISVJLYYILNIP6OVKS3GKYL2ZCNGXSSG4SOQWCP5WPWO6EFS7HEHMRWVKBRVHB33TFD4SMNBHRJCTDFHU6SZXCZD6RFXX2OORYGL5H2GYF2IIH2KKD4T72IR4F577G2E5II2OMMXYF2GDYNTS7WGAUXFEWRJ3CTKDBDWMHUKJQF4ZFOTNBBYBIZRXZYERXXIG6ASWNF62HTTIQSOQAEZEGZNSDAGQWOFW3BKDHOZ5FDR4MS74LDWUDI4FNIT374F4VDI; Domain=.jd.com; Expires=Sat, 15-Apr-2023 09:49:40 GMT; Path=/`)
//api.SetCookieWithStr(`_vender_new_=GI63BGTJFDBQ5WAGCFF7AT6OUYWYFPVBHAMTKOO3UVWYDSOEMFHDXQYGEAIFTLTM6ICNHRYEWG53Y3EUFLXVKLH6RMKWRM7G5WA6AFWSDWJGOQXV26K6RBZHAU5DFEA4TBIYSVY45F3GK7X3Q5FHPNMZOCRLURVOQKFM7B2D4BBXHS2QRSAAEO6RPWOL62CWNGPOHMGMAGVAJ77C4IC2ET3NVN6PBVCLI56OPZPR7RNFOAEYFZTP2BSCS5ZMNTWN4HIOX5NUKDT5EUE5QQ722X2U2H7DKPHIF7OHQ6IR4HMB5NA7ACWBHEXOENOEOZZIHVQJO7KJEXLBYIYCIDSN4MFK5XWTHEBPJHFWGJBRDK2VBA6IMVCSGASA4TPDBKXN5UZZAL2JZNRSJTR363NRPUBYOPSTMWNXIMF4UYZPUUZPLTJX56EXDHFSRQF3F4FZXK47M3A33GZHU6UCVEAOAOFE3CAHDO4DMIK7334CESHKG3LT2KSPPDT3GXU5UUQOJGGQTYURJRST3PF7U6LS5URX2WPD7XV3OBKJQ2C3NFHU35TKJPWKEJUIFFUHXPJBS6AEJ7JV4RL5QDPT7ZGGIHSED3ZCDW563MYWFUFFCNMWQEZXMPDHUOHRDBNSOWPCAI4ZR4B4NENJLWZUO3XKK4L3AUAJKICWYY6MNDA; Domain=.shop.jd.com; Expires=Sat, 15-Apr-2023 09:49:40 GMT; Path=/
//Set-Cookie: b-sec=3XU3DWGGC3WZSRRUDORQHBODFJXKGJRSNQI4WVMLXDV5NBOUPIJOQVBHAPZIOY3FR7GY3A37P62ZS; Domain=.jd.com; Expires=Fri, 15-Apr-2022 21:49:40 GMT; Path=/`)
//api.SetCookie("thor", "5E1D1AE7BBC42FACA3496D9C54AF9F879CF4836860E75FF70BFCDEAC5A75C1C5E43030CF54E4A3A8F5E760492948E69B763D115FE234A59948BA538A4F7E18F38B80F818E28EAE71F1CF5BFE2D0DC456D56E8BEAEF10D398C709D9A4EB46923C7E63867435BD42996F1570A816FD1B0B247CD9756A1184DD61317D28BBF77F828691684AD6E60801B2BB38F9DE086D73")
}

View File

@@ -71,12 +71,12 @@ func TestAllOrders(t *testing.T) {
//StoreID: "",
//OrderStatusArray: nil,
//OrderID: "",
OrderCreateDateRange: []string{"2022-01-26 00:00:46", "2022-01-26 17:19:46"},
//SelectedTabName: "allOrders",
//SortName: "desc",
//OrderCreateDateRange: []string{"2022-01-26 00:00:46", "2022-01-26 17:19:46"},
SelectedTabName: "allOrders",
SortName: "desc",
})
if err != nil {
t.Fatal(err)
fmt.Println("err========", err)
}
t.Log(utils.Format4Output(result, false))
}

View File

@@ -1,74 +1,73 @@
package tiktok
//
//import (
// "encoding/json"
// "fmt"
// "git.rosy.net.cn/baseapi/platformapi"
// "git.rosy.net.cn/baseapi/utils"
// "net/http"
// "strings"
//)
//
//func (a *API) GetAppID() string {
// return a.clientKey
//}
//
//func (a *API) GetSecret() string {
// return a.clientSecret
//}
//
//func New(clientSecret, clientKey string, config ...*platformapi.APIConfig) *API {
// curConfig := platformapi.DefAPIConfig
// if len(config) > 0 {
// curConfig = *config[0]
// }
// return &API{
// clientSecret: clientSecret,
// clientKey: clientKey,
// client: &http.Client{Timeout: curConfig.ClientTimeout},
// config: &curConfig,
// }
//}
//
//func (a *API) AccessAPI(baseUrl, actionApi, method string, bizParams map[string]interface{}) (retVal map[string]interface{}, err error) {
// // 序列化
// data, err := json.Marshal(bizParams)
// if err != nil {
// return nil, err
// }
//
// // 全路径请求参数
// fullURL := utils.GenerateGetURL(baseUrl, actionApi, nil)
//
// // 发送请求
// sendUrl := func() *http.Request {
// var request *http.Request
// if http.MethodPost == method {
// request, _ = http.NewRequest(http.MethodPost, fullURL, strings.NewReader(string(data)))
// } else {
// request, _ = http.NewRequest(http.MethodGet, utils.GenerateGetURL(baseUrl, actionApi, bizParams), nil)
// }
// switch actionApi {
// case TiktokTokenUrl:
// request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
// case TiktokRefreshTokenUrl:
// request.Header.Set("Content-Type", "multipart/form-data")
// }
//
// return request
// }
//
// // 数据解析
// dataMarshal := func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) {
// if jsonResult1 == nil {
// return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil")
// }
//
// retVal = jsonResult1
// return errLevel, err
// }
//
// err = platformapi.AccessPlatformAPIWithRetry(a.client, sendUrl, a.config, dataMarshal)
// return retVal, err
//}
import (
"encoding/json"
"fmt"
"git.rosy.net.cn/baseapi/platformapi"
"git.rosy.net.cn/baseapi/utils"
"net/http"
"strings"
)
func (a *API) GetAppID() string {
return a.clientKey
}
func (a *API) GetSecret() string {
return a.clientSecret
}
func New(clientSecret, clientKey string, config ...*platformapi.APIConfig) *API {
curConfig := platformapi.DefAPIConfig
if len(config) > 0 {
curConfig = *config[0]
}
return &API{
clientSecret: clientSecret,
clientKey: clientKey,
client: &http.Client{Timeout: curConfig.ClientTimeout},
config: &curConfig,
}
}
func (a *API) AccessAPI(baseUrl, actionApi, method string, bizParams map[string]interface{}) (retVal map[string]interface{}, err error) {
// 序列化
data, err := json.Marshal(bizParams)
if err != nil {
return nil, err
}
// 全路径请求参数
fullURL := utils.GenerateGetURL(baseUrl, actionApi, nil)
// 发送请求
sendUrl := func() *http.Request {
var request *http.Request
if http.MethodPost == method {
request, _ = http.NewRequest(http.MethodPost, fullURL, strings.NewReader(string(data)))
} else {
request, _ = http.NewRequest(http.MethodGet, utils.GenerateGetURL(baseUrl, actionApi, bizParams), nil)
}
switch actionApi {
case TiktokTokenUrl:
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
case TiktokRefreshTokenUrl:
request.Header.Set("Content-Type", "multipart/form-data")
}
return request
}
// 数据解析
dataMarshal := func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) {
if jsonResult1 == nil {
return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil")
}
retVal = jsonResult1
return errLevel, err
}
err = platformapi.AccessPlatformAPIWithRetry(a.client, sendUrl, a.config, dataMarshal)
return retVal, err
}

View File

@@ -1,25 +1,24 @@
package tiktok
//
//import (
// "git.rosy.net.cn/baseapi/platformapi"
// "net/http"
// "sync"
//)
//
//const (
// BaseURL = "https://open.douyin.com"
// TiktokTokenUrl = "/oauth/access_token/"
// TiktokRefreshTokenUrl = "/oauth/renew_refresh_token/"
//)
//
//type API struct {
// clientSecret string // 应用唯一标识对应的密钥
// clientKey string // 应用唯一标识
// client *http.Client
// config *platformapi.APIConfig
// locker sync.RWMutex
//
// msgToken string
// msgKey string
//}
import (
"git.rosy.net.cn/baseapi/platformapi"
"net/http"
"sync"
)
const (
BaseURL = "https://open.douyin.com"
TiktokTokenUrl = "/oauth/access_token/"
TiktokRefreshTokenUrl = "/oauth/renew_refresh_token/"
)
type API struct {
clientSecret string // 应用唯一标识对应的密钥
clientKey string // 应用唯一标识
client *http.Client
config *platformapi.APIConfig
locker sync.RWMutex
msgToken string
msgKey string
}

View File

@@ -1,82 +1,81 @@
package tiktok
//
//import (
// "git.rosy.net.cn/baseapi/utils"
// "net/http"
//)
//
//// OauthAccessTokenResData access_token
//type OauthAccessTokenResData struct {
// AccessToken string `json:"access_token"` // 接口调用凭证
// UnionId string `json:"union_id"` // 当且仅当该网站应用已获得该用户的userinfo授权时才会出现该字段
// Scope string `json:"scope"` // 用户授权的作用域(Scope),使用逗号(,分隔开放平台几乎几乎每个接口都需要特定的Scope。
// ExpiresIn uint64 `json:"expires_in"` // access_token接口调用凭证超时时间单位
// OpenId string `json:"open_id"` // 授权用户唯一标识
// RefreshToken string `json:"refresh_token"` // 用户刷新access_token
// DYError
//}
//
//// DYError 错误结构体
//type DYError struct {
// ErrorCode int64 `json:"error_code,omitempty"` // 错误码
// Description string `json:"description,omitempty"` // 错误码描述
//}
//
//// OauthAccessTokenRes access_token
//type OauthAccessTokenRes struct {
// Data OauthAccessTokenResData `json:"data"`
// Message string `json:"message"`
//}
//
//// 获取抖音token
//func (a *API) GetTiktokToken(code string) (*OauthAccessTokenRes, error) {
// tokenReq := make(map[string]interface{}, 4)
// tokenReq["client_secret"] = a.clientSecret
// tokenReq["code"] = code
// tokenReq["grant_type"] = "authorization_code"
// tokenReq["client_key"] = a.clientKey
// result, err := a.AccessAPI(BaseURL, TiktokTokenUrl, http.MethodPost, tokenReq)
// if err != nil {
// return nil, err
// }
//
// oauthAccessToken := &OauthAccessTokenRes{}
// if err := utils.Map2StructByJson(result, oauthAccessToken, false); err != nil {
// return nil, err
// }
// return oauthAccessToken, nil
//}
//
//// OauthRefreshTokenResData 刷新access_token
//type OauthRefreshTokenResData struct {
// AccessToken string `json:"access_token"` // 接口调用凭证
// Scope string `json:"scope"` // 用户授权的作用域
// ExpiresIn uint64 `json:"expires_in"` // 过期时间,单位(秒)
// OpenId string `json:"open_id"` // 当前应用下,授权用户唯一标识
// RefreshToken string `json:"refresh_token"` // 用户刷新
// DYError
//}
//
//// OauthRefreshTokenRes 刷新access_token
//type OauthRefreshTokenRes struct {
// Data OauthRefreshTokenResData `json:"data"`
// Message string `json:"message"`
//}
//
//// 刷新用户Refresh token
//func (a *API) RefreshToken(refreshToken string) (*OauthRefreshTokenRes, error) {
// tokenReq := make(map[string]interface{}, 2)
// tokenReq["client_key"] = a.clientKey
// tokenReq["refresh_token"] = refreshToken
// // 通过旧的refresh_token获取新的refresh_token调用后旧refresh_token会失效新refresh_token有30天有效期。最多只能获取5次新的refresh_token5次过后需要用户重新授权。
// result, err := a.AccessAPI(BaseURL, TiktokRefreshTokenUrl, http.MethodPost, tokenReq)
// if err != nil {
// return nil, err
// }
// oauthRefreshToken := &OauthRefreshTokenRes{}
// if err := utils.Map2StructByJson(result, oauthRefreshToken, false); err != nil {
// return nil, err
// }
// return oauthRefreshToken, nil
//}
import (
"git.rosy.net.cn/baseapi/utils"
"net/http"
)
// OauthAccessTokenResData access_token
type OauthAccessTokenResData struct {
AccessToken string `json:"access_token"` // 接口调用凭证
UnionId string `json:"union_id"` // 当且仅当该网站应用已获得该用户的userinfo授权时才会出现该字段。
Scope string `json:"scope"` // 用户授权的作用域(Scope),使用逗号(,分隔开放平台几乎几乎每个接口都需要特定的Scope
ExpiresIn uint64 `json:"expires_in"` // access_token接口调用凭证超时时间单位
OpenId string `json:"open_id"` // 授权用户唯一标识
RefreshToken string `json:"refresh_token"` // 用户刷新access_token
DYError
}
// DYError 错误结构体
type DYError struct {
ErrorCode int64 `json:"error_code,omitempty"` // 错误码
Description string `json:"description,omitempty"` // 错误码描述
}
// OauthAccessTokenRes access_token
type OauthAccessTokenRes struct {
Data OauthAccessTokenResData `json:"data"`
Message string `json:"message"`
}
// 获取抖音token
func (a *API) GetTiktokToken(code string) (*OauthAccessTokenRes, error) {
tokenReq := make(map[string]interface{}, 4)
tokenReq["client_secret"] = a.clientSecret
tokenReq["code"] = code
tokenReq["grant_type"] = "authorization_code"
tokenReq["client_key"] = a.clientKey
result, err := a.AccessAPI(BaseURL, TiktokTokenUrl, http.MethodPost, tokenReq)
if err != nil {
return nil, err
}
oauthAccessToken := &OauthAccessTokenRes{}
if err := utils.Map2StructByJson(result, oauthAccessToken, false); err != nil {
return nil, err
}
return oauthAccessToken, nil
}
// OauthRefreshTokenResData 刷新access_token
type OauthRefreshTokenResData struct {
AccessToken string `json:"access_token"` // 接口调用凭证
Scope string `json:"scope"` // 用户授权的作用域
ExpiresIn uint64 `json:"expires_in"` // 过期时间,单位(秒)
OpenId string `json:"open_id"` // 当前应用下,授权用户唯一标识
RefreshToken string `json:"refresh_token"` // 用户刷新
DYError
}
// OauthRefreshTokenRes 刷新access_token
type OauthRefreshTokenRes struct {
Data OauthRefreshTokenResData `json:"data"`
Message string `json:"message"`
}
// 刷新用户Refresh token
func (a *API) RefreshToken(refreshToken string) (*OauthRefreshTokenRes, error) {
tokenReq := make(map[string]interface{}, 2)
tokenReq["client_key"] = a.clientKey
tokenReq["refresh_token"] = refreshToken
// 通过旧的refresh_token获取新的refresh_token调用后旧refresh_token会失效,新refresh_token有30天有效期。最多只能获取5次新的refresh_token5次过后需要用户重新授权。
result, err := a.AccessAPI(BaseURL, TiktokRefreshTokenUrl, http.MethodPost, tokenReq)
if err != nil {
return nil, err
}
oauthRefreshToken := &OauthRefreshTokenRes{}
if err := utils.Map2StructByJson(result, oauthRefreshToken, false); err != nil {
return nil, err
}
return oauthRefreshToken, nil
}