ソースを参照

feat: 微信登录获取openid

Burt 2 年 前
コミット
70b74eb3cb
5 ファイル変更27 行追加3 行削除
  1. 1 1
      env/.env.development
  2. 1 1
      src/pages/demo/demo/pinia.vue
  3. 22 0
      src/pages/my/index.vue
  4. 1 1
      src/store/user.ts
  5. 2 0
      src/typings.d.ts

+ 1 - 1
env/.env.development

@@ -3,4 +3,4 @@ NODE_ENV = 'development'
 # 是否去除console 和 debugger
 # 是否去除console 和 debugger
 VITE_DELETE_CONSOLE = false
 VITE_DELETE_CONSOLE = false
 
 
-VITE_SERVER_BASEURL = 'http://localhost:4000'
+VITE_SERVER_BASEURL = 'https://ukw0y1.laf.run'

+ 1 - 1
src/pages/demo/demo/pinia.vue

@@ -28,7 +28,7 @@ const countStore = useCountStore()
 const userStore = useUserStore()
 const userStore = useUserStore()
 
 
 const setUserInfo = () => {
 const setUserInfo = () => {
-  userStore.setUserInfo({ username: 'fly', token: 'abcdef' })
+  userStore.setUserInfo({ nickname: 'fly', avatar: '', token: 'abcdef' })
 }
 }
 const clearUserInfo = () => {
 const clearUserInfo = () => {
   userStore.clearUserInfo()
   userStore.clearUserInfo()

+ 22 - 0
src/pages/my/index.vue

@@ -5,12 +5,34 @@
 </route>
 </route>
 <template>
 <template>
   <view>我的</view>
   <view>我的</view>
+  <view>wx的openid:{{ openId }} </view>
   <view @click="goLoginPage">去登录</view>
   <view @click="goLoginPage">去登录</view>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
+import { useUserStore } from '@/store'
+import { http } from '@/utils/http'
+
+const userStore = useUserStore()
+
+const openId = ref('')
 const goLoginPage = () => {
 const goLoginPage = () => {
   uni.navigateTo({ url: '/pages/login/index' })
   uni.navigateTo({ url: '/pages/login/index' })
 }
 }
+
 // 用户登录,获取openId
 // 用户登录,获取openId
+uni.login({
+  provider: 'weixin',
+  success: async ({ code }) => {
+    const res = await http<{ session_key: string; openid: string }>({
+      method: 'GET',
+      url: '/weixin/jscode2session',
+      data: {
+        code,
+      },
+    })
+    openId.value = res.result.openid
+    userStore.setUserInfo({ nickname: '微信用户', avatar: '', openid: res.result.openid })
+  },
+})
 </script>
 </script>

+ 1 - 1
src/store/user.ts

@@ -5,7 +5,7 @@ import { UserInfo } from '../typings'
 export const useUserStore = defineStore(
 export const useUserStore = defineStore(
   'user',
   'user',
   () => {
   () => {
-    const userInfo = ref<UserInfo>()
+    const userInfo = ref<UserInfo>({ nickname: '', avatar: '' })
 
 
     const setUserInfo = (val: UserInfo) => {
     const setUserInfo = (val: UserInfo) => {
       userInfo.value = val
       userInfo.value = val

+ 2 - 0
src/typings.d.ts

@@ -1,6 +1,8 @@
 export type UserInfo = {
 export type UserInfo = {
   nickname: string
   nickname: string
   avatar: string
   avatar: string
+  /** 微信的 openid,非微信没有这个字段 */
+  openid?: string
   token?: string
   token?: string
 }
 }
 export type UserItem = {
 export type UserItem = {