抖音授权,门店回调日志打印,定时九点半日志打印,小程序门店切换时不成功
This commit is contained in:
@@ -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")
|
||||
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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_token,5次过后需要用户重新授权。
|
||||
// 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_token,5次过后需要用户重新授权。
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user