266 lines
7.0 KiB
TypeScript
266 lines
7.0 KiB
TypeScript
import { useEvent } from 'expo'
|
|
// import ExpoQQ from 'expo-qq'
|
|
import { useRouter } from 'expo-router'
|
|
// import ExpoWeChat from 'expo-wechat'
|
|
import { useEffect, useState } from 'react'
|
|
import { Image, Text, View } from 'react-native'
|
|
import { AButton, ACheckbox } from '@/components/common/ao'
|
|
import CustomHeader from '@/components/custom/Header'
|
|
import { IconQq, IconWeixin } from '@/components/iconfont'
|
|
import { loginQqApi, loginWxApi } from '@/request/api/auth'
|
|
import { useAppStore } from '@/store/app'
|
|
import { useUserStore } from '@/store/user'
|
|
import { toast } from '@/utils/toast'
|
|
|
|
export default function Auth() {
|
|
const [loading, setLoading] = useState(false)
|
|
const [isAgree, setIsAgree] = useState(true)
|
|
const [form, setForm] = useState({
|
|
type: 0,
|
|
openid: '',
|
|
code: '',
|
|
})
|
|
|
|
const router = useRouter()
|
|
const userStore = useUserStore()
|
|
const appStore = useAppStore()
|
|
|
|
// const onLoginFinished = useEvent(ExpoQQ, 'onLoginFinished')
|
|
// const onGetUserInfo = useEvent(ExpoQQ, 'onGetUserInfo')
|
|
// const authResult = useEvent(ExpoWeChat, 'onAuthResult')
|
|
|
|
// async function onQQLogin() {
|
|
// setLoading(true)
|
|
// setForm(val => ({
|
|
// ...val,
|
|
// type: 1,
|
|
// }))
|
|
// await ExpoQQ.login(['get_user_info'])
|
|
// }
|
|
|
|
// async function onWeChatLogin() {
|
|
// setLoading(true)
|
|
|
|
// // 检查微信是否安装
|
|
// const isInstalled = await ExpoWeChat.isWXAppInstalled()
|
|
// if (!isInstalled) {
|
|
// toast.show({
|
|
// title: onLoginFinished?.errorMessage || '请先安装微信',
|
|
// })
|
|
// setLoading(false)
|
|
// return
|
|
// }
|
|
|
|
// setForm(val => ({
|
|
// ...val,
|
|
// type: 0,
|
|
// }))
|
|
|
|
// ExpoWeChat.sendAuthRequest('snsapi_userinfo', 'state123')
|
|
// }
|
|
|
|
// useEffect(() => {
|
|
// ExpoQQ.init('102826474', '')
|
|
// ExpoWeChat.registerApp('wxdab3e21a1f7e392f', '')
|
|
// }, [])
|
|
|
|
// useEffect(() => {
|
|
// if (!onLoginFinished) {
|
|
// return
|
|
// }
|
|
|
|
// if (!onLoginFinished.success) {
|
|
// toast.show({
|
|
// title: onLoginFinished?.errorMessage || '授权失败,请检查手机是否安装 QQ 或确认授权',
|
|
// })
|
|
// setLoading(false)
|
|
// return
|
|
// }
|
|
|
|
// const fetchUserInfo = async () => {
|
|
// try {
|
|
// const tokenInfo = await ExpoQQ.getLoginTokenInfo()
|
|
// if (!tokenInfo.openId) {
|
|
// toast.show({
|
|
// title: tokenInfo?.errorMessage || '授权失败,请检查手机是否安装 QQ 或确认授权',
|
|
// })
|
|
// setLoading(false)
|
|
// return
|
|
// }
|
|
|
|
// setForm(val => ({
|
|
// ...val,
|
|
// openid: String(tokenInfo.openId),
|
|
// }))
|
|
|
|
// await ExpoQQ.sendGetUserInfoReq()
|
|
// }
|
|
// catch (e) {
|
|
// console.error('QQ 登录未完成', e)
|
|
// setLoading(false)
|
|
// }
|
|
// }
|
|
|
|
// fetchUserInfo()
|
|
// }, [onLoginFinished])
|
|
|
|
// // QQ登录
|
|
// useEffect(() => {
|
|
// const handleLogin = async () => {
|
|
// if (!onGetUserInfo)
|
|
// return
|
|
|
|
// try {
|
|
// const loginRes = await loginQqApi({
|
|
// openid: form.openid,
|
|
// nickname: onGetUserInfo.nickname || '',
|
|
// avatar: onGetUserInfo.figureurlQq_2 || onGetUserInfo.figureurl_2,
|
|
// })
|
|
|
|
// if (loginRes.isSuccess) {
|
|
// userStore.setUserInfo({
|
|
// token: loginRes.data.token,
|
|
// id: loginRes.data.userId,
|
|
// nickname: loginRes.data.nickname,
|
|
// avatar: loginRes.data.avatar,
|
|
// })
|
|
|
|
// router.push('/auth/space')
|
|
// }
|
|
// }
|
|
// catch (err) {
|
|
// console.error('登录接口出错', err)
|
|
// }
|
|
// finally {
|
|
// setLoading(false)
|
|
// }
|
|
// }
|
|
|
|
// handleLogin()
|
|
// }, [onGetUserInfo])
|
|
|
|
// // 微信登录
|
|
// useEffect(() => {
|
|
// if (!authResult)
|
|
// return
|
|
|
|
// const handleLogin = async () => {
|
|
// if (authResult.errorCode === 0) {
|
|
// try {
|
|
// const loginRes = await loginWxApi({
|
|
// code: authResult.code,
|
|
// })
|
|
|
|
// if (loginRes.isSuccess) {
|
|
// userStore.setUserInfo({
|
|
// token: loginRes.data.token,
|
|
// id: loginRes.data.userId,
|
|
// nickname: loginRes.data.nickname,
|
|
// avatar: loginRes.data.avatar,
|
|
// })
|
|
|
|
// router.push('/')
|
|
// }
|
|
// }
|
|
// catch (err) {
|
|
// console.error('登录接口出错', err)
|
|
// }
|
|
// finally {
|
|
// setLoading(false)
|
|
// }
|
|
// }
|
|
// else {
|
|
// console.log('授权失败:', authResult.errorMessage)
|
|
// setLoading(false)
|
|
// }
|
|
// }
|
|
|
|
// handleLogin()
|
|
// }, [authResult])
|
|
|
|
function testLogin() {
|
|
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo3NjY3ODU5ODIxNjUwNjEsImlhdCI6MTc2OTM0ODI0Nn0.17ZNaHD3HSLM8dVn_JQK-gvsG9MKj47IRYV9D4xZkzs
|
|
|
|
userStore.setUserInfo({
|
|
token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo3NzgxMTUwMzIxMDA5MzMsImlhdCI6MTc3MjExMDQ5N30.Ab7_YNwftJigktnPt8f-FwwcLeS45CkrH0jT2jLjRtA',
|
|
id: 778115032100933,
|
|
nickname: 'Zhang',
|
|
avatar: 'http://thirdqq.qlogo.cn/ek_qqapp/AQHVialeUibE42oV8RvTTVZ4tyRlPYeJrUibWTwtCPfV68E4rSzn9cw00GkXQ3QDTiawwhjoqQb7/100',
|
|
})
|
|
|
|
appStore.init()
|
|
|
|
router.push('/')
|
|
}
|
|
|
|
return (
|
|
<View className="flex-1 bg-white px-6 justify-center">
|
|
<CustomHeader
|
|
showHeader={false}
|
|
/>
|
|
<View className="items-center mb-12">
|
|
<Image
|
|
source={require('@/static/images/logo.png')}
|
|
className="w-20 h-20 mb-4"
|
|
resizeMode="contain"
|
|
/>
|
|
<Text className="text-xl font-semibold text-gray-900">
|
|
Welcome to OneAO
|
|
</Text>
|
|
</View>
|
|
|
|
<View className="flex flex-col gap-4">
|
|
{/* <AButton
|
|
leftIcon={
|
|
<IconWeixin color="#fff" />
|
|
}
|
|
loading={loading}
|
|
onPress={onWeChatLogin}
|
|
>
|
|
WeChat
|
|
</AButton>
|
|
|
|
<AButton
|
|
variant="outline"
|
|
leftIcon={
|
|
<IconQq />
|
|
}
|
|
loading={loading}
|
|
onPress={onQQLogin}
|
|
>
|
|
QQ
|
|
</AButton> */}
|
|
|
|
<AButton
|
|
variant="outline"
|
|
leftIcon={
|
|
<IconQq />
|
|
}
|
|
loading={loading}
|
|
onPress={testLogin}
|
|
>
|
|
模拟登录
|
|
</AButton>
|
|
</View>
|
|
|
|
<View className="mt-10 items-center flex flex-row justify-center">
|
|
<ACheckbox
|
|
checked={isAgree}
|
|
size="sm"
|
|
label={(
|
|
<Text className="text-sm text-gray-400 text-center leading-4">
|
|
登录即表示你同意我们的
|
|
<Text className="text-gray-600"> 用户协议 </Text>
|
|
和
|
|
<Text className="text-gray-600"> 隐私政策</Text>
|
|
</Text>
|
|
)}
|
|
onChange={(val) => {
|
|
setIsAgree(val)
|
|
}}
|
|
/>
|
|
</View>
|
|
</View>
|
|
)
|
|
}
|