1. 程式人生 > >微信小程式踩坑—使用者登入介面

微信小程式踩坑—使用者登入介面

最近做的一個專案有涉及到使用者登入。微信小程式的使用者登入在我看來有兩種,一種是需要用微信提供的使用者身份標識,簡單地說就是小程式的登入者就是使用這個小程式的微信使用者,還有一種是小程式和伺服器之間有自己的一套使用者唯一標識,類似於員工id這種,這種就不需要獲取微信的登陸憑證換取openid等繁雜操作,就是簡單地輸入賬號密碼登陸然後就能從伺服器獲取使用者資料。這次做的專案用的是第二種。

第一種方式官方文件的流程圖已經說得足夠明白清晰。

步驟分為兩步:

1.小程式呼叫wx.login() 獲取 臨時登入憑證code ,並回傳到開發者伺服器。

2.開發者伺服器以code換取 使用者唯一標識openid

 和 會話金鑰session_key

之後開發者伺服器可以根據使用者標識來生成自定義登入態,用於後續業務邏輯中前後端互動時識別使用者身份。

具體介面詳見官方文件

第二種方式就簡單多了,只需要發起wx.request()請求將輸入的賬號密碼送至伺服器換取登入資訊。

wxml程式碼

<view class="container">
 
 <open-data type="userAvatarUrl" class='avatar'></open-data>
 <!-- <image src='{{avatarUrl}}' class='avatar'></image>-->
  <form bindsubmit="formSubmit" class='form'>
    <view class="row">

    <input type="text" name="userId" placeholder="請輸入使用者賬號" placeholder-class='placeholder' value="{{userId}}" />
   </view>
   <view class="row">
     <input type="password" name="userPassword" placeholder="請輸入密碼" placeholder-class='placeholder' value="{{userPassword}}" />
   </view>
    <view class="row">
      <button class='btn'  form-type="submit"><text class='lable'>繫結賬號</text></button>
    </view>
 
  </form>
</view>

這裡特別要提一嘴的是,用到了這行程式碼顯示使用者頭像。

<open-data type="userAvatarUrl" class='avatar'></open-data>

獲取使用者資訊時,如果是隻需要獲取使用者的頭像和暱稱,可以直接使用<open data />元件,如果還需要更多使用者資訊要通過wx.getUserInfo()獲取。

最終的介面是這樣子的

登陸按鈕的bindsubmit事件中的wx.request()

wx.request({
        url: '',           //伺服器的登入介面
        data: {
          id: objData.userId,
           password: objData.userPassword
        },
        header: { 'Content-Type': 'application/x-www-form-urlencoded' },
        method: 'POST',
        success: function (res) {
        if(res.data.code == 0){              //賬號密碼比對正確
           var userInfo = res.data.data    //使用者登入資訊
           wx.setStorageSync('userInfo', userInfo);  
                //跳轉到成功頁面
          wx.switchTab({
             url: '../onDuty/onDuty'
          })
          }
           else {                //出現error
             wx.showToast({
              title: res.data.message.slice(5),
               icon: 'loading'
             })
          }
        },
        fail: function () {
          console.log('繫結失敗QAQ')
          wx.showModal({
          title: '失敗',
          content: '繫結失敗,請重試',
          })
              }})

相關推薦

程式—使用者登入介面

最近做的一個專案有涉及到使用者登入。微信小程式的使用者登入在我看來有兩種,一種是需要用微信提供的使用者身份標識,簡單地說就是小程式的登入者就是使用這個小程式的微信使用者,還有一種是小程式和伺服器之間有自己的一套使用者唯一標識,類似於員工id這種,這種就不需要獲取微信的登陸憑證

程式—本地快取

同一個微信使用者,同一個小程式 storage 上限為 10MB。 1.wx.setStorageSync(KEY,DATA)  將data 同步儲存在本地快取中指定的 key 中,會覆蓋掉原來該 key 對應的內容。 var userInfo = res.data.da

程式–設定cookie保持session

由於每次wx.request()都會先經過微信服務端再到伺服器端,所以每一次request都會建立一個新的session。並且微信小程式是沒有cookie機制的,要維持會話需要自己來儲存cookie,並且請求的時候加上帶有sessionid的cookie。 客戶端向服務端發起請求時,sessio

程式 實錄

最近幾個月工作飽和度較高,寫了一些小程式相關資料都在公司內網wiki中。 正好有朋友想做小程式相關,想看些資料。趁著 這個契機,把文章發出來給大家分享一下。 文章簡陋,勿噴。 開發前 需要與產品商榷的頁面細節 序號

程式總結

1,滑動頁面的時候會出現留白。解決:最外層套一個scroll,不設定x、y滑動。注意距離要撐開,內層要有一個大的view,給它一個小margin-top 2,button出現多餘的邊框。解決:button::after設定border為none 3,自定義元件。自定義元件如果是page({}

程式支付提示商戶未開通支付許可權

繼上次踩坑事件後 我們現在API祕藥都是採用數字+小寫字母 後面不多久公司就成為了微信服務商 工作起來 效率提高不少 然鵝我今天又踩了一個坑 給客戶開通了微信支付客戶不給賬號給我登入 拿不到裡面的一些資料 和APPID授權啥的 都是指導客戶開通 這些弄完之後 測試小程式支付

程式日誌(二)

indexOf 在wxml檔案中不能使用 Object.keys() toString() indexOf() ; 其中indexOf()方法在wxml中怎麼樣都返回undefined; textarea textarea在小程式中算是一個比較大的坑了;

程式(1):wx.showModal模態對話方塊中content換行

問題:wx.showModal 對話方塊內容不能換行? 如上圖所示,模態對話方塊中content是沒有換行的,但是我們需求中有需要換行提醒的業務,那怎麼辦呢?官方API中並沒有告訴我們怎麼做! 解決方案:使用“\r\n”換行 原始碼 wx.showModal({

程式——專案內資料夾刪除不掉

想要刪publishTask資料夾,在IDE裡刪沒反應,去檔案資源管理器刪提示需要管理員許可權, 太鬼扯了,原來因為要刪的資料夾裡有巢狀一層資料夾,所以禁止刪除。要先刪掉裡層資料夾,才可以刪除外層。換句話說,想要刪除的資料夾要保證不包

程式- tabBar.list[3].selectedIconPath 大小超過 40kb

重新啟動微信小程式編輯器的時候遇到了這樣的一個問題:tabBar.list[3].selectedIconPath 大小超過 40kb微信小程式開發的過程之中總會出現這樣或者那樣的錯誤,需要我們耐心的去尋找,仔細檢視和百度查詢之後,發現了原因:其中有一張圖片,替換的時候沒有注

程式記錄

  最近開發了一款微信小程式,在開發過程中遇到了一些微信小程式的坑,記錄下來,希望對後邊開發小程式的同學有點幫助。後期開發過程如果有新的踩坑記錄,也會相應的更新在改文件中。 1、畫素值與單位之間不能有空格   微信小程式的樣式存放在.wxss檔案,畫素單位用rp

程式 之JSON.parse ()轉換失敗問題

微信小程式:json、map、字串轉換 JSON.parse (<anonymous>)轉換失敗,可以使用微信小程式快取機制解決 /*****index.js*****/ formSubmit: function (e) { wx.setStorage

程式之路--01 元件層級過高

問題描述 我在開發小程式的過程中,遇到video,textarea等元件層級過高,其他元素無法遮蓋這些元件,讓人抓狂。 案例1 textarea元件元素過高,當有toast彈出時,文字浮於上方,效果如圖所示: 我們看到textarea元件文字

程式日記1——呼叫授權視窗

0. 引言   微信小程式為了優化使用者體驗,取消了在進入小程式時立馬出現授權視窗。需要使用者主動點選按鈕,觸發授權視窗。   那麼,在我實踐過程中,出現了以下問題。 1. 無法彈出授權視窗 2. 希望在使用者已經授權的情況下,不顯示按鈕 1. 具體實現   app.js的onLaunch

程式之路(四):登入獲取openid、unionid

在微信小程式中,因為各種各樣的原因我們會需要獲取到使用者的openid或者unionid下面就簡單來講一下在小程式中如何獲取openid和unionid。 步驟一:微信登入獲取登入憑證

程序

log icon spa utils for not duration 是我 問題 setData function is not defined 這個問題只會出現在 wx.request(OBJECT)中 具體替代嗎吧!寫日誌真的不是我的強項 //logs

程序之一【weui-wxss-master單選按鈕圖標修改思路】

ini lcx 微信 一個 margin group ces 顯示 In 小程序原生所帶的weui框架做小程序UI實在太方便了,但是他的一些細微變化也是讓開發中碰到不少頭疼的問題 一直以來單選多選的美化都是設計師重點表達的地方之一 而weui-wxss-master中的單選

Egret 生成 自帶EUI 的遊戲

end custom 點擊 ati gre faq commonjs require IE 1. 首先,再次被網上一大堆屎一樣的資料搞得浪費了我一天時間。各種坑。 2. 本文先講一種正確的方式,然後再列舉坑。 去www.egret.com下載最新的引擎,我的最新版

程式開發使用者授權登入

用wx.login獲取登入憑證code <!--pages/user/index.wxml--> <view hidden='{{boolean}}'> <view wx:if="{{isLogin == 1}}"> <!-- 個人資訊 --

程式記錄 ------- canvas 生成分享到朋友圈帶程式碼的圖片

最近做了一個問卷類的小程式,其中的結果頁想讓使用者進行朋友圈分享轉發,網上搜索資料,得出解決思路,用 canvas 將頁面繪製生成圖片,然後儲存到手機相簿,最終效果如下: 在這裡我只寫頁面裡關於 canvas 生成圖片並進行儲存這個流程的相關程式碼,並且會