MCPcopy Create free account
hub / github.com/LagrangeDev/LagrangeGo / NewDeviceVerify

Method NewDeviceVerify

client/client.go:272–338  ·  view source on GitHub ↗
(verifyURL string)

Source from the content-addressed store, hash-verified

270}
271
272func (c *QQClient) NewDeviceVerify(verifyURL string) error {
273 original := func() string {
274 params := strings.FieldsFunc(strings.Split(verifyURL, "?")[1], func(r rune) bool {
275 return r == '&'
276 })
277 for _, param := range params {
278 if strings.HasPrefix(param, "str_url=") {
279 return strings.TrimPrefix(param, "str_url=")
280 }
281 }
282 return ""
283 }()
284
285 query := func() []byte {
286 data, _ := json.Marshal(&NTNewDeviceQrCodeQuery{
287 Uint32Flag: 0,
288 Token: base64.StdEncoding.EncodeToString(utils.S2B(original)),
289 })
290 return data
291 }()
292 for errCount, timeSec := 0, 0; timeSec < 120 || errCount < 3; timeSec++ {
293 resp, err := func() (*NTNewDeviceQrCodeResponse, error) {
294 resp, err := http.Post(fmt.Sprintf("https://oidb.tim.qq.com/v3/oidbinterface/oidb_0xc9e_8?uid=%d&getqrcode=1&sdkappid=39998&actype=2", c.Uin),
295 "application/json", bytes.NewReader(query))
296 if err != nil {
297 return nil, err
298 }
299 defer resp.Body.Close()
300 data, _ := io.ReadAll(resp.Body)
301 var response NTNewDeviceQrCodeResponse
302 err = json.Unmarshal(data, &response)
303 if err != nil {
304 return nil, err
305 }
306 return &response, nil
307 }()
308 if err != nil {
309 errCount++
310 continue
311 }
312 if resp.StrNtSuccToken != "" {
313 c.transport.Sig.TempPwd = utils.S2B(resp.StrNtSuccToken)
314 data, err := buildNtloginRequest(c.Uin, c.Version(), c.Device(), &c.transport.Sig, c.transport.Sig.TempPwd)
315 if err != nil {
316 return err
317 }
318
319 packet, err := c.sendUniPacketAndWait(
320 "trpc.login.ecdh.EcdhService.SsoNTLoginPasswordLoginNewDevice",
321 data,
322 )
323 if err != nil {
324 return err
325 }
326 ret, err := parseNewDeviceLoginResponse(packet, &c.transport.Sig)
327 if err != nil {
328 return err
329 }

Callers 1

mainFunction · 0.80

Calls 13

VersionMethod · 0.95
DeviceMethod · 0.95
sendUniPacketAndWaitMethod · 0.95
initMethod · 0.95
S2BFunction · 0.92
buildNtloginRequestFunction · 0.85
ReadAllMethod · 0.80
UnmarshalMethod · 0.80
SuccessfulMethod · 0.80
MarshalMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected