天天看點

接口聯調篇:進入首頁自動鑒權靜默登入

作者:小程式創作者Monstar

微信小程式雲開發實戰-答題積分賽小程式

接口聯調篇:進入首頁自動鑒權靜默登入

基本介紹

微信雲開發提供了多個基礎能力,包括資料庫、存儲、雲函數等。其中,雲函數是一段運作在雲端的代碼,無需管理伺服器,在開發工具内編寫、一鍵上傳部署即可運作後端代碼。

小程式内提供了專門用于雲函數調用的 API。開發者可以在雲函數内使用 wx-server-sdk 提供的 getWXContext 方法擷取到每次調用的上下文(appid、openid 等)。

技術要點

1、wx-server-sdk

雲函數中使用 wx-server-sdk 需在對應雲函數目錄下安裝 wx-server-sdk 依賴,在建立雲函數時會在雲函數目錄下預設建立一個 package.json,雲函數的運作環境是 Node.js 。

2、getWXContext

在雲函數中擷取微信調用上下文。

const cloud = require('wx-server-sdk')
 
exports.main = async (event, context) => {
  const {
    OPENID,//小程式使用者 openid,小程式端調用雲函數時有
    APPID,//小程式 AppID,小程式端調用雲函數時有
    UNIONID,//小程式使用者 unionid,小程式端調用雲函數,并且滿足 unionid 擷取條件時有
    ENV,//雲函數所在環境的 ID
  } = cloud.getWXContext()
 
  return {
    OPENID,
    APPID,
    UNIONID,
    ENV,
  }
}           

定義雲函數

定義一個雲函數,命名為 getOpenId ,功能是實作自動鑒權,擷取使用者登入态(openid):

const cloud = require('wx-server-sdk')
 
// 初始化 cloud
cloud.init({
  env: 'test-5613f6abn21'
})
 
/**
 * 這個示例将經自動鑒權過的小程式使用者 openid 傳回給小程式端
 * 
 * event 參數包含小程式端調用傳入的 data
 * 
 */
exports.main = async (event, context) => {
 
  // 可執行其他自定義邏輯
  // console.log 的内容可以在雲開發雲函數調用日志檢視
 
  // 擷取 WX Context (微信調用上下文),包括 OPENID、APPID、及 UNIONID(需滿足 UNIONID 擷取條件)
  const wxContext = cloud.getWXContext()
  console.log(wxContext)
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}           

部署雲函數

在 cloudfunctions/getOpenId 檔案夾右擊,然後選擇 “上傳并部署”。

接口聯調篇:進入首頁自動鑒權靜默登入

調用雲函數

在進入首頁時,進行調用雲函數getOpenId,将經自動鑒權過的小程式使用者 openid 傳回給小程式端。

/**
     * 生命周期函數--監聽頁面加載
     */
    onLoad(options) {
      this.getOpenId();
    },
    getOpenId() {
      wx.cloud.callFunction({
        name: 'getOpenId' // 需調用的雲函數名
      }).then(res => {
        // 支援promise方式
        console.log(res)
      })
    },           

注意:在開發者工具中上傳部署雲函數後,我們在小程式中可以這麼調用。

接口聯調篇:進入首頁自動鑒權靜默登入

本篇小結

作為小程式創作者,實作自動鑒權擷取使用者登入态(openid),實在是太常見了。比如網絡安全知識答題、交通安全答題、 消防安全知識宣傳、 安全生産知識學習、學法普法、五四青年節等答題活動或有獎競答等應用場景。

雲函數是一段運作在雲端的代碼,如需在雲函數中操作資料庫、管理雲檔案、調用其他雲函數等操作,可使用官方提供的 npm 包 wx-server-sdk 進行操作。

需特别注意,雲函數運作環境即是管理端。

接口聯調篇:進入首頁自動鑒權靜默登入