import { Platform } from 'react-native'; /* ===================== 微信授权适配层 ===================== * 把「调起微信并拿到一次性 code」这一平台能力单独隔离,原因: * 1. 当前项目是 Expo 管理流,没有原生模块,Expo Go 中无法真正调起微信; * 2. 两端(iOS / Android)的微信 SDK 初始化与回调方式不同,差异应收敛在此文件; * 3. 接入真实 SDK 时只替换 requestWechatAuthCode 的函数体,上层 hook 与页面无需改动。 * * 接真实 SDK 的步骤(接入时才做,现阶段不要动): * 1. npx expo install react-native-wechat-lib(或对应 expo 插件) * 2. 微信开放平台创建移动应用,拿到 AppID,并登记 iOS 的 Universal Links * (Universal Links 是 iOS 端微信回调的硬性要求,安卓走包名 + 应用签名) * 3. 用 EAS Build 生成自定义开发客户端(Expo Go 不含原生模块,跑不了) * 4. 把 requestWechatAuthCode 换成: * const res = await WeChat.sendAuthRequest('snsapi_userinfo', 'wechat_auth_state'); * return res.code; */ /** 微信是否可用:Expo Go 或未装微信时为 false */ export function isWechatAvailable(): boolean { // 真实 SDK 接入后改为 WeChat.isWXAppInstalled() return Platform.OS !== 'web'; } /** * 调起微信授权,返回一次性 code。 * @throws 未安装微信、用户取消授权、或授权失败时抛错 */ export async function requestWechatAuthCode(): Promise { /* * mock 实现:返回带时间戳的假 code,仅用于打通前端三分支流程。 * 真实实现见上方注释。 */ return Promise.resolve(`mock_wx_code_${Date.now()}`); }