mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-15 09:48: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
|
* @file core api TGApi.ts
|
||||||
* @description 应用用到的 API
|
* @description 应用用到的 API
|
||||||
* @author BTMuli<bt-muli@outlook.com>
|
* @author BTMuli<bt-muli@outlook.com>
|
||||||
* @since Alpha v0.1.3
|
* @since Alpha v0.2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ENKA_API } from "./ENKA";
|
import { ENKA_API } from "./ENKA";
|
||||||
import { Hk4eAnnoListApi, Hk4eAnnoContentApi, Hk4eAnnoQuery } from "./Hk4e";
|
import { Hk4eAnnoListApi, Hk4eAnnoContentApi, Hk4eAnnoQuery } from "./Hk4e";
|
||||||
|
import { PassportTokenApi, PassportCookieTokenApi, PassportVetifyApi } from "./Passport";
|
||||||
import { TakumiTokensApi } from "./Takumi";
|
import { TakumiTokensApi } from "./Takumi";
|
||||||
|
|
||||||
// 应用 API
|
// 应用 API
|
||||||
@@ -15,7 +16,12 @@ const TGApi = {
|
|||||||
GameAnnoContent: Hk4eAnnoContentApi, // 游戏公告内容 API
|
GameAnnoContent: Hk4eAnnoContentApi, // 游戏公告内容 API
|
||||||
GameAnnoQuery: Hk4eAnnoQuery, // 游戏公告 Query
|
GameAnnoQuery: Hk4eAnnoQuery, // 游戏公告 Query
|
||||||
GameEnka: ENKA_API, // 游戏 ENKA API
|
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;
|
export default TGApi;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { getAnnoList, getAnnoContent } from "./getAnno";
|
import { getAnnoList, getAnnoContent } from "./getAnno";
|
||||||
import { getTokens } from "./getTokens";
|
import { getTokensByLoginTicket, getLtokenByStoken, getCookieTokenByStoken, vetifyStoken } from "./getTokens";
|
||||||
|
|
||||||
const TGRequest = {
|
const TGRequest = {
|
||||||
Anno: {
|
Anno: {
|
||||||
@@ -14,7 +14,10 @@ const TGRequest = {
|
|||||||
getContent: getAnnoContent,
|
getContent: getAnnoContent,
|
||||||
},
|
},
|
||||||
User: {
|
User: {
|
||||||
getTokens,
|
getTokens: getTokensByLoginTicket,
|
||||||
|
getLToken: getLtokenByStoken,
|
||||||
|
getCookieToken: getCookieTokenByStoken,
|
||||||
|
vetifyStoken,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,14 @@ import TGApi from "../api/TGApi";
|
|||||||
// utils
|
// utils
|
||||||
import { getRequestHeader } from "../utils/getRequestHeader";
|
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);
|
const header = getRequestHeader(cookie);
|
||||||
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
return await http.fetch<BTMuli.User.Response.Token>(url, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
@@ -23,3 +29,60 @@ export async function getTokens (cookie: BTMuli.User.Base.Cookie): Promise<BTMul
|
|||||||
return res.data.data.list;
|
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