1. 程式人生 > >小程式登入-joe

小程式登入-joe

-----------------------------------------------------------------------------編輯日期2018-10-29

小程式的登入

  • 登入的規範過程如下:
  1. app.js中拿到code與後臺介面互動換區使用者的openid
  2. index.js里根據app.js中的openid與後臺互動獲得使用者登入狀態(這裡看需求)
  • 程式碼如下:
  1. app.js:
// app.js
App({
  onLaunch: function () {
    // 展示本地儲存能力
    let that = this
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs',
logs) // 登入 wx.login({ success: res => { } }) //獲取使用者資訊 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已經授權,可以直接呼叫 getUserInfo 獲取頭像暱稱,不會彈框 wx.getUserInfo({ success: res => { // 可以將 res 傳送給後臺解碼出 unionId
this.globalData.userInfo = res.userInfo // 由於 getUserInfo 是網路請求,可能會在 Page.onLoad 之後才返回 // 所以此處加入 callback 以防止這種情況 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) }
} }) }, /*-- 這是獲取openid的函式 --*/ getOpenid: function () { var that = this; return new Promise(function (resolve, reject) { wx.login({ success: function (res) { //code 獲取使用者資訊的憑證 if (res.code) { //請求獲取使用者openid wx.request({ url: "test.html", //這裡是你的介面 data: { 'jsCode': res.code, }, //這裡是需要傳給後臺的code,引數名按需而變 method: 'POST', //介面訪問方式 header: { 'Content-type': 'application/x-www-form-urlencoded' }, success: function (res) { wx.setStorageSync('myOpenid', res.data.openid); //儲存openid var res = { status: 200, data: res.data.openid } resolve(res); } }); } else { console.log('獲取使用者登入態失敗!') reject('error'); } } }) }); }, /*-- 這是獲取openid的函式-END --*/ globalData: { userInfo:'', }, })
  1. index.js
const app = getApp()
Page({
  	onLoad: function (options) {
  		let that = this;
  		app.getOpenid().then(function (res) {
	      if (res.status == 200) {
	        wx.request({
	          url: 'test01.html',
	          data: { 'openid': wx.getStorageSync('myOpenid'), },
	          header: { 'content-type': 'application/x-www-form-urlencoded' },
	          method: 'GET',
	          success: function (res) {
	            //這裡就可以拿到登入的狀態了,然後根據具體需求具體操作
	          }
	        })
	      } else {
	        console.log(res.data);
	      }
	    });
  	}
})

PS:此文僅當做作者記錄筆記用…