feat: 代理全部类型账户的 ProfileKey
This commit is contained in:
@@ -394,29 +394,35 @@ func (u *userServiceImpl) QueryProfile(profileId uuid.UUID, unsigned bool, textu
|
||||
|
||||
func (u *userServiceImpl) ProfileKey(accessToken string) (resp *ProfileKeyResponse, err error) {
|
||||
token, ok := u.tokenService.GetToken(accessToken)
|
||||
var profileId uuid.UUID
|
||||
if ok && token.GetAvailableLevel() == model.Valid {
|
||||
resp = new(ProfileKeyResponse)
|
||||
now := time.Now().UTC()
|
||||
resp.RefreshedAfter = now
|
||||
resp.ExpiresAt = now.Add(10 * time.Minute)
|
||||
keyPair, err := u.getProfileKey(token.SelectedProfile.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.KeyPair = keyPair
|
||||
signStr := fmt.Sprintf("%d%s", resp.ExpiresAt.UnixMilli(), keyPair.PublicKey)
|
||||
sign, err := util.Sign(signStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.PublicKeySignature = sign
|
||||
resp.PublicKeySignatureV2 = sign
|
||||
profileId = token.SelectedProfile.Id
|
||||
} else {
|
||||
err = util.PostForString("https://api.minecraftservices.com/player/certificates", accessToken, []byte(""), resp)
|
||||
id, _, err := util.ParseOfficialToken(accessToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
profileId, err = util.ToUUID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
resp = new(ProfileKeyResponse)
|
||||
now := time.Now().UTC()
|
||||
resp.RefreshedAfter = now
|
||||
resp.ExpiresAt = now.Add(10 * time.Minute)
|
||||
keyPair, err := u.getProfileKey(profileId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.KeyPair = keyPair
|
||||
signStr := fmt.Sprintf("%d%s", resp.ExpiresAt.UnixMilli(), keyPair.PublicKey)
|
||||
sign, err := util.Sign(signStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.PublicKeySignature = sign
|
||||
resp.PublicKeySignatureV2 = sign
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user