t-comm
Version:
专业、稳定、纯粹的工具库
79 lines (78 loc) • 3.36 kB
TypeScript
/**
* 微信小程序/小游戏 ⇄ 腾讯 QQ 小程序 登录互通能力(核心实现)
*
* 文档参考:
* - https://doc.weixin.qq.com/doc/w3_AQQARgb8AOsUIV9oM3SQTG0ERPg9D
* - https://doc.weixin.qq.com/doc/w3_AEIAjwYaACMCNak2HLbrYSemshvHF
* - https://git.woa.com/qzone-web-v2/mini-program
*
* 设计原则:零外部业务耦合
* - 不依赖 @tencent/pmd-network、@tencent/pmd-tools、oops 等业务包
* - 接口域名、post 方法、QQ 互联 AppId 均由调用方注入
* - 仅依赖 wx.* 全局 API(小程序/小游戏内置)
*/
import { HandleQQLoginOnShowOptions, LaunchQQMPOptions, QQOnShowOptions, QQQueryUserInfoRsp, QQStorageLike, QQTicketInfo, QueryQQLoginUserInfoOptions } from './types';
/** 腾讯 QQ 小程序的 appId(默认值,可被参数覆盖) */
export declare const DEFAULT_QQ_MP_APP_ID = "wx26da53d900421226";
/** QQ 登录页路径(默认值,可被参数覆盖) */
export declare const DEFAULT_QQ_LOGIN_PATH = "pagesLogin/pages/login/login";
/** QueryUserInfo 接口路径(默认值,可被参数覆盖) */
export declare const DEFAULT_QUERY_USER_INFO_PATH = "pmdtrpc.commcgi.user.user/QueryUserInfo";
/**
* 从 App.onShow 的 options 中提取 QQ 登录票据
*
* @param options App.onShow 回调参数
* @param qqMpAppId 腾讯 QQ 小程序 appId(默认 wx26da53d900421226)
* @returns QQ 登录票据信息,未登录或失败时返回 undefined
*/
export declare function getQQTicketInfo(options: QQOnShowOptions | undefined | null, qqMpAppId?: string): QQTicketInfo | undefined;
/**
* 处理 QQ 登录返回:提取票据并写入 storage
*
* 通常在 App.onShow 中调用:
* ```ts
* onShow(options => {
* const ticket = handleQQLoginOnShow(options);
* if (ticket) {
* // 用 ticket 调 queryQQLoginUserInfo
* }
* });
* ```
*
* @param options App.onShow 回调参数
* @param config 配置(QQ 小程序 appId / 自定义 storage / storage key)
* @returns 提取到的票据信息,若非 QQ 登录回调或失败则返回 undefined
*/
export declare function handleQQLoginOnShow(options: QQOnShowOptions | undefined | null, config: HandleQQLoginOnShowOptions): QQTicketInfo | undefined;
/**
* 从 storage 读取已保存的 QQ 登录票据
*/
export declare function readQQTicketInfo(config: {
storage?: QQStorageLike;
storageKey: string;
}): QQTicketInfo | undefined;
/**
* 清除已保存的 QQ 登录票据
*/
export declare function clearQQTicketInfo(config: {
storage?: QQStorageLike;
storageKey: string;
}): void;
/**
* 跳转腾讯 QQ 小程序进行 QQ 登录
*
* 调用后 QQ 小程序登录完成,会通过 wx.navigateBackMiniProgram 返回,
* 在本小程序的 App.onShow 中通过 referrerInfo.extraData 拿到票据。
*
* @param options 必填 qqAppId(QQ 互联 AppId)
*/
export declare function launchQQMP(options: LaunchQQMPOptions): Promise<any>;
/**
* 使用 QQ 票据请求后台 QueryUserInfo 接口换取登录态
*
* 接口域名、post 方法均由调用方注入,组件不耦合任何业务包。
*
* @param options 必填 host / post / ticketInfo
* @returns 后台返回的用户信息;票据无效或失败时返回 undefined
*/
export declare function queryQQLoginUserInfo<T = QQQueryUserInfoRsp>(options: QueryQQLoginUserInfoOptions): Promise<T | undefined>;