轻松聘
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

35 lines
1.7 KiB

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<string> {
/*
* mock 实现:返回带时间戳的假 code,仅用于打通前端三分支流程。
* 真实实现见上方注释。
*/
return Promise.resolve(`mock_wx_code_${Date.now()}`);
}