t-comm
Version:
专业、稳定、纯粹的工具库
42 lines (41 loc) • 1.75 kB
TypeScript
import type { IRequestInterceptor, IRawRequest, ICocosLoginInfoStorage } from '../../types';
export interface ICocosLoginInfoParamOptions {
/** 小游戏 appid,作为 url query 透传给后台 */
appid: string;
/** 登录平台类型,默认 3(微信小游戏) */
platform?: number;
/** 登录类型 _ltype,默认 tiploginwxproc */
ltype?: string;
/** 登录态存储(wx.getStorageSync / wx.setStorageSync 或自定义) */
storage: ICocosLoginInfoStorage;
/** 存储登录态的 key,默认 cocos_login_info */
storageKey?: string;
/**
* 无登录态时,业务方提供的获取 wx.code 方法(一次性)
* 通常是 wx.login 的 Promise 化封装
*/
getLoginCode?: () => Promise<{
code: string;
}>;
loginMp: () => Promise<void>;
isTestEnv: () => boolean;
}
/**
* Cocos 端登录态参数拦截器
*
* 规则:
* - 公共 query:tstamp(每次都带,防缓存)
* - 有登录态 → body.login_info = storage.get(...),url 不再拼登录相关 query
* - 无登录态 → url 追加 appid / platform / _ltype,并调 getLoginCode() 拿 wx.code 塞进 url 的 code query
*
* 幂等:每次基于 CocosHostInterceptor 产出的 `param.url` 拼 query,
* decorator 重试时 cocos-host 会用 __cocosOriginUrl 重拼 URL,
* 所以本拦截器不会累加 query。
*
* 参考 pmd-npm/packages/business/src/network/interceptor/request/cocos/cocosLoginInfoParamInterceptor.ts
*/
export declare class CocosLoginInfoParamInterceptor implements IRequestInterceptor {
private options;
constructor(options: ICocosLoginInfoParamOptions);
interceptor(param: IRawRequest): Promise<[boolean, IRawRequest]>;
}