62 行
1.7 KiB
JavaScript
62 行
1.7 KiB
JavaScript
const app = getApp()
|
||
|
||
// 引入 SDK(实际使用时通过 npm 包或复制 dist 文件)
|
||
const { XuqmMiniProgramSDK } = require('../../utils/sdk')
|
||
|
||
Page({
|
||
data: {
|
||
userId: 'user_a',
|
||
password: '123456',
|
||
loading: false,
|
||
error: '',
|
||
},
|
||
|
||
onLoad() {
|
||
const sdk = new XuqmMiniProgramSDK()
|
||
const { baseUrl, wsUrl } = app.globalData
|
||
sdk.init({ appKey: 'ak_demo_chat', appSecret: 'secret', debug: true, baseUrl, wsUrl })
|
||
app.globalData.sdk = sdk
|
||
},
|
||
|
||
onUserIdInput(e) {
|
||
this.setData({ userId: e.detail.value })
|
||
},
|
||
|
||
onPasswordInput(e) {
|
||
this.setData({ password: e.detail.value })
|
||
},
|
||
|
||
async onLogin() {
|
||
const { userId, password } = this.data
|
||
if (!userId || !password) {
|
||
this.setData({ error: '请输入用户ID和密码' })
|
||
return
|
||
}
|
||
this.setData({ loading: true, error: '' })
|
||
try {
|
||
const sdk = app.globalData.sdk
|
||
const config = sdk.requireConfig()
|
||
// 1. Call demo API to get userSig
|
||
const res = await new Promise((resolve, reject) => {
|
||
wx.request({
|
||
url: `${config.apiUrl}/api/demo/auth/login`,
|
||
method: 'POST',
|
||
header: { 'Content-Type': 'application/json' },
|
||
data: { appId: config.appKey, userId, password },
|
||
success: (r) => resolve(r.data),
|
||
fail: (err) => reject(err),
|
||
})
|
||
})
|
||
if (res.code !== 200) {
|
||
throw new Error(res.message || '登录失败')
|
||
}
|
||
// 2. Login with userSig
|
||
await sdk.login(userId, res.data.imToken)
|
||
app.globalData.userId = userId
|
||
wx.navigateTo({ url: '/pages/chat/chat' })
|
||
} catch (err) {
|
||
this.setData({ error: err.message || '登录失败', loading: false })
|
||
}
|
||
},
|
||
})
|