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
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()}`);
|
|
}
|
|
|