1. 程式人生 > 資料庫 >微信小程式獲取手機號,雲函式解密,寫入雲資料庫

微信小程式獲取手機號,雲函式解密,寫入雲資料庫

1.頁面
在miniprogram下新建getPhoneNumber資料夾
在這裡插入圖片描述
getPhoneNumber.wxml

<view class="container">
<view class='header'>
<image class="img" mode="widthFix" src='/images/wx_login.png'></image>
</view>
<view class='content'>
            <view class="tx">申請獲取你的手機號</view>
</view>
<button class="bt" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">授權登入</button>
</view>

getPhoneNumber.wxss

.container {
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    padding: 200rpx 0;
    box-sizing: border-box;
  } 
  .tx{
      font-weight: bold;
  }
  .bt{
      margin-top: 10px;
      border: 1px solid #3b3d3b;
      background-color: #4ac44a;
  }
.header{
    display:flex;                    
    justify-content: center;         
    align-items:center;
}
.img{
    width: 100px;
}

getPhoneNumber.js

const db = wx.cloud.database()
Page({
    getPhoneNumber(e)
    {
        console.log("點選後獲得",e)
        wx.cloud.callFunction({
            name:'getPhone',
            data:{
                cloudID:e.detail.cloudID
            }
        }).then(res=>{
            console.log("獲取成功",res)

            this.setData({
                phone:"獲得的手機號:"+res.result.list[0].data.phoneNumber
            })
            
            db.collection('user').add({
                data:{
                    telephone:res.result.list[0].data.phoneNumber
                },
                
                success: res => {
                  wx.showToast({
                    title: '新增記錄成功',
                  })
                  console.log('[資料庫] [新增記錄] 成功,記錄 _id: ', res._id)
                },
                fail: err => {
                  wx.showToast({
                    icon: 'none',
                    title: '新增記錄失敗'
                  })
                  console.error('[資料庫] [新增記錄] 失敗:', err)
                }
                
              })
              wx.redirectTo({
                url: '../homepage/homepage'//寫入資料庫後跳轉到首頁
            })
        }).catch(err=>{
            console.log("獲取失敗",err)
        })
    },
})

2.雲函式
(1)首先確認你是否安裝了Node和npm
進入cmd終端,檢視node和npm版本,顯示版本則已安裝,若未安裝請先安裝
在這裡插入圖片描述

(2)右擊專案的此資料夾,選擇新建Node.js雲函式
在這裡插入圖片描述
設定雲函式名為getPhone
在這裡插入圖片描述
(3)編寫雲函式(getPhone/index.js)

// 雲函式入口檔案
const cloud = require('wx-server-sdk')
cloud.init({
  env:'XXXXX'//此處為你的環境名
})
// 雲函式入口函式
exports.main = async (event, context) => {
  const res=await cloud.getOpenData({
    list:[event.cloudID]
  })
  return res
}

(4)上傳雲函式
以管理員身份執行cmd命令列,進入雲函式資料夾路徑,執行

npm install --save wx-server-sdk@latest

如圖,wx-server-sdk安裝完畢
在這裡插入圖片描述

右擊此資料夾,選擇”上傳並部署:所有檔案“
在這裡插入圖片描述
至此,雲函式上傳完畢。
注意:每次修改雲函式後都要上傳一次,否則修改無效!(這個坑之前踩了很久才發現原因)
(5)執行
在這裡插入圖片描述
在這裡插入圖片描述
資料庫增加了一條登入手機號資訊
在這裡插入圖片描述