This commit is contained in:
邹宗楠
2022-04-14 18:12:00 +08:00
parent ff10be5184
commit a80506cb43

View File

@@ -1,89 +1,89 @@
package douyin package douyin
//
import ( //import (
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" // "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
//
"git.rosy.net.cn/baseapi/platformapi/weixinapi" // "git.rosy.net.cn/baseapi/platformapi/weixinapi"
"git.rosy.net.cn/jx-callback/business/auth2" // "git.rosy.net.cn/jx-callback/business/auth2"
"git.rosy.net.cn/jx-callback/business/auth2/authprovider" // "git.rosy.net.cn/jx-callback/business/auth2/authprovider"
"git.rosy.net.cn/jx-callback/business/model" // "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals" // "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api" // "git.rosy.net.cn/jx-callback/globals/api"
) //)
//
const ( //const (
AuthTypeTiktokMini = "tiktokmini" // 抖音小程序 // AuthTypeTiktokMini = "tiktokmini" // 抖音小程序
) //)
//
type TiktopMiniAuther struct { //type TiktopMiniAuther struct {
authprovider.DefAuther // authprovider.DefAuther
} //}
//
//
var ( //var (
AutherObjMini *TiktopMiniAuther // AutherObjMini *TiktopMiniAuther
) //)
//
func init() { //func init() {
AutherObjMini = new(TiktopMiniAuther) // AutherObjMini = new(TiktopMiniAuther)
auth2.RegisterAuther(AuthTypeTiktokMini, AutherObjMini) // auth2.RegisterAuther(AuthTypeTiktokMini, AutherObjMini)
} //}
//
func (a *TiktopMiniAuther) VerifySecret(dummy, code string) (authBindEx *auth2.AuthBindEx, err error) { //func (a *TiktopMiniAuther) VerifySecret(dummy, code string) (authBindEx *auth2.AuthBindEx, err error) {
globals.SugarLogger.Debugf("toktok mini VerifySecret jsCode:%s", code) // globals.SugarLogger.Debugf("toktok mini VerifySecret jsCode:%s", code)
//
sessionInfo, err := api.TiktokApi.GetTiktokToken(code) // sessionInfo, err := api.TiktokApi.GetTiktokToken(code)
if err == nil { // if err == nil {
if authBindEx, err = a.UnionFindAuthBind(AuthTypeTiktokMini, api.TiktokApi.GetAppID(), []string{AuthTypeTiktokMini}, sessionInfo.Data.OpenId, sessionInfo.Data.UnionId, sessionInfo); err == nil { // if authBindEx, err = a.UnionFindAuthBind(AuthTypeTiktokMini, api.TiktokApi.GetAppID(), []string{AuthTypeTiktokMini}, sessionInfo.Data.OpenId, sessionInfo.Data.UnionId, sessionInfo); err == nil {
authBindEx.UserData = sessionInfo.Data // authBindEx.UserData = sessionInfo.Data
} // }
} // }
return authBindEx, err // return authBindEx, err
} //}
//
// 特殊接口 //// 特殊接口
func (a *TiktopMiniAuther) DecryptData(authInfo *auth2.AuthInfo, jsCode, encryptedData, iv string) (decryptedDataBase64 string, err error) { //func (a *TiktopMiniAuther) DecryptData(authInfo *auth2.AuthInfo, jsCode, encryptedData, iv string) (decryptedDataBase64 string, err error) {
globals.SugarLogger.Debugf("weixin mini DecryptData jsCode:%s, encryptedData:%s, iv:%s", jsCode, encryptedData, iv) // globals.SugarLogger.Debugf("weixin mini DecryptData jsCode:%s, encryptedData:%s, iv:%s", jsCode, encryptedData, iv)
var sessionKey string // var sessionKey string
appID, jsCode := weixin.SplitJsCode(jsCode) // appID, jsCode := weixin.SplitJsCode(jsCode)
if jsCode != "" { // if jsCode != "" {
sessionInfo, err := getWxApp(appID).SNSCode2Session(jsCode) // sessionInfo, err := getWxApp(appID).SNSCode2Session(jsCode)
if err == nil { // if err == nil {
// if authBindEx, err := a.UnionFindAuthBind(AuthTypeMini, getWxApp(appID).GetAppID(), []string{AuthTypeMini}, sessionInfo.OpenID, "", nil); err == nil { // // if authBindEx, err := a.UnionFindAuthBind(AuthTypeMini, getWxApp(appID).GetAppID(), []string{AuthTypeMini}, sessionInfo.OpenID, "", nil); err == nil {
// if authBindEx.UserID != authInfo.GetID() { // // if authBindEx.UserID != authInfo.GetID() {
// return "", fmt.Errorf("jsCode与token不匹配") // // return "", fmt.Errorf("jsCode与token不匹配")
// } // // }
// } else { // // } else {
// return "", err // // return "", err
// } // // }
sessionKey = sessionInfo.SessionKey // sessionKey = sessionInfo.SessionKey
} else { // } else {
return "", err // return "", err
} // }
} else { // } else {
if authInfo.AuthBindInfo.Type != AuthTypeTiktokMini { // if authInfo.AuthBindInfo.Type != AuthTypeTiktokMini {
// return "", ErrAuthTypeShouldBeMini // // return "", ErrAuthTypeShouldBeMini
} // }
sessionKey = authInfo.AuthBindInfo.UserData.(string) // sessionKey = authInfo.AuthBindInfo.UserData.(string)
} // }
decryptedData, err := weixinapi.SNSDecodeMiniProgramData(encryptedData, sessionKey, iv) // decryptedData, err := weixinapi.SNSDecodeMiniProgramData(encryptedData, sessionKey, iv)
if err != nil { // if err != nil {
return "", err // return "", err
} // }
return string(decryptedData), nil // return string(decryptedData), nil
} //}
//
func (a *TiktopMiniAuther) GetUserType() (userType int8) { //func (a *TiktopMiniAuther) GetUserType() (userType int8) {
return model.UserTypeStoreBoss // return model.UserTypeStoreBoss
} //}
//
func getWxApp(appID string) (miniApi *weixinapi.API) { //func getWxApp(appID string) (miniApi *weixinapi.API) {
miniApi = api.WeixinMiniAPI // miniApi = api.WeixinMiniAPI
if len(appID) > 0 && appID == api.WeixinMiniAppID2 { // if len(appID) > 0 && appID == api.WeixinMiniAppID2 {
miniApi = api.WeixinMiniAPI2 // miniApi = api.WeixinMiniAPI2
} // }
if len(appID) > 0 && appID == api.WeixinMiniAppIDsc { // if len(appID) > 0 && appID == api.WeixinMiniAppIDsc {
miniApi = api.WeixinMiniAPIsc // miniApi = api.WeixinMiniAPIsc
} // }
return miniApi // return miniApi
} //}