mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-13 09:28:14 +08:00
🤔 feat(api): 写了几个接口的请求跟方法,等会测一下
This commit is contained in:
14
src/core/api/Passport.ts
Normal file
14
src/core/api/Passport.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* @file core api Passport.ts
|
||||
* @description 定义 Passport API
|
||||
* @author BTMuli<bt-muli@outlook.com>
|
||||
* @since Alpha v0.2.0
|
||||
*/
|
||||
|
||||
const PassportApi = "https://passport.mihoyo.com/"; // 基础 API
|
||||
const PassportV4Api = "https://passport-api-v4.mihoyo.com/"; // 基础 API
|
||||
const PassportAuthApi = `${PassportApi}account/auth/api/`; // 认证 API
|
||||
|
||||
export const PassportTokenApi = `${PassportAuthApi}getLTokenBySToken`; // 根据 stoken 获取 ltoken
|
||||
export const PassportCookieTokenApi = `${PassportAuthApi}getCookieAccountInfoBySToken`; // 根据 Cookie 获取 Token
|
||||
export const PassportVetifyApi = `${PassportV4Api}account/ma-cn-session/web/verifyLtoken`; // 验证 stoken 有效性
|
||||
@@ -2,11 +2,12 @@
|
||||
* @file core api TGApi.ts
|
||||
* @description 应用用到的 API
|
||||
* @author BTMuli<bt-muli@outlook.com>
|
||||
* @since Alpha v0.1.3
|
||||
* @since Alpha v0.2.0
|
||||
*/
|
||||
|
||||
import { ENKA_API } from "./ENKA";
|
||||
import { Hk4eAnnoListApi, Hk4eAnnoContentApi, Hk4eAnnoQuery } from "./Hk4e";
|
||||
import { PassportTokenApi, PassportCookieTokenApi, PassportVetifyApi } from "./Passport";
|
||||
import { TakumiTokensApi } from "./Takumi";
|
||||
|
||||
// 应用 API
|
||||
@@ -15,7 +16,12 @@ const TGApi = {
|
||||
GameAnnoContent: Hk4eAnnoContentApi, // 游戏公告内容 API
|
||||
GameAnnoQuery: Hk4eAnnoQuery, // 游戏公告 Query
|
||||
GameEnka: ENKA_API, // 游戏 ENKA API
|
||||
GameTokens: TakumiTokensApi, // 游戏 Token API
|
||||
GameTokens: {
|
||||
getTokens: TakumiTokensApi, // 根据 login_ticket 获取游戏 Token
|
||||
getLToken: PassportTokenApi, // 根据 stoken 获取 ltoken
|
||||
getCookieToken: PassportCookieTokenApi, // 根据 Cookie 获取 Token
|
||||
vetifyStoken: PassportVetifyApi, // 验证 stoken 有效性
|
||||
},
|
||||
};
|
||||
|
||||
export default TGApi;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
import { getAnnoList, getAnnoContent } from "./getAnno";
|
||||
import { getTokens } from "./getTokens";
|
||||
import { getTokensByLoginTicket, getLtokenByStoken, getCookieTokenByStoken, vetifyStoken } from "./getTokens";
|
||||
|
||||
const TGRequest = {
|
||||
Anno: {
|
||||
@@ -14,7 +14,10 @@ const TGRequest = {
|
||||
getContent: getAnnoContent,
|
||||
},
|
||||
User: {
|
||||
getTokens,
|
||||
getTokens: getTokensByLoginTicket,
|
||||
getLToken: getLtokenByStoken,
|
||||
getCookieToken: getCookieTokenByStoken,
|
||||
vetifyStoken,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -12,8 +12,14 @@ import TGApi from "../api/TGApi";
|
||||
// utils
|
||||
import { getRequestHeader } from "../utils/getRequestHeader";
|
||||
|
||||
export async function getTokens (cookie: BTMuli.User.Base.Cookie): Promise<BTMuli.User.Base.TokenItem[] | BTMuli.Genshin.Base.Response> {
|
||||
const url = `${TGApi.GameTokens}?login_ticket=${cookie.login_ticket}&token_types=3&uid=${cookie.login_uid}`;
|
||||
/**
|
||||
* @description 根据 login_ticket 获取游戏 Token,包括 stoken 和 ltoken
|
||||
* @since Alpha v0.2.0
|
||||
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
|
||||
* @returns {Promise<BTMuli.User.Base.TokenItem[] | BTMuli.Genshin.Base.Response>}
|
||||
*/
|
||||
export async function getTokensByLoginTicket (cookie: BTMuli.User.Base.Cookie): Promise<BTMuli.User.Base.TokenItem[] | BTMuli.Genshin.Base.Response> {
|
||||
const url = `${TGApi.GameTokens.getTokens}?login_ticket=${cookie.login_ticket}&token_types=3&uid=${cookie.login_uid}`;
|
||||
const header = getRequestHeader(cookie);
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
@@ -23,3 +29,60 @@ export async function getTokens (cookie: BTMuli.User.Base.Cookie): Promise<BTMul
|
||||
return res.data.data.list;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 根据 stoken 获取 ltoken
|
||||
* @since Alpha v0.2.0
|
||||
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
|
||||
* @param {string} stoken stoken
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export async function getLtokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
||||
const url = `${TGApi.GameTokens.getLToken}?stoken=${stoken}`;
|
||||
const header = getRequestHeader(cookie);
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
}).then((res) => {
|
||||
console.log(res.data);
|
||||
if (res.data.retcode !== 0) return res.data;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 根据 stoken 获取 cookieToken
|
||||
* @since Alpha v0.2.0
|
||||
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
|
||||
* @param {string} stoken stoken
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export async function getCookieTokenByStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
||||
const url = `${TGApi.GameTokens.getCookieToken}?stoken=${stoken}`;
|
||||
const header = getRequestHeader(cookie);
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
}).then((res) => {
|
||||
console.log(res.data);
|
||||
if (res.data.retcode !== 0) return res.data;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 验证 stoken 有效性
|
||||
* @since Alpha v0.2.0
|
||||
* @param {BTMuli.User.Base.Cookie} cookie 用户 Cookie
|
||||
* @param {string} stoken stoken
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export async function vetifyStoken (cookie: BTMuli.User.Base.Cookie, stoken: string): Promise<unknown> {
|
||||
const url = `${TGApi.GameTokens.vetifyStoken}?stoken=${stoken}`;
|
||||
const header = getRequestHeader(cookie);
|
||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
}).then((res) => {
|
||||
console.log(res.data);
|
||||
if (res.data.retcode !== 0) return res.data;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user