1. 程式人生 > >小程式登入態

小程式登入態

維持小程式的登陸態

   第一確認自己是不是使用自有帳號註冊,比如說讓使用者輸入手機號註冊或登入。如果是的話,就是用自己的機制,比如可以用手機號來唯一標識每一個使用者。

如果不是的話,就請參考一下的官方提供的機制。

一,官方提供的登陸態時序圖。


第一步。需要先通過wx.login獲取code,code是登入憑證。wx.login介紹

利用wx.login就可以返回code。

wx.login({ success: function(res) { var code = res.code; if (code) { console
.log('獲取使用者登入憑證:' + code); } else { console.log('獲取使用者登入態失敗:' + res.errMsg); } } }); 第二步。將獲取的code傳送到自己的後臺伺服器。  呼叫wx.request方法。
  wx.request({
      url:'--------填寫自己的伺服器地址',
      data: {
        code:code-----右邊的code是你用wx.login獲取的code,左邊的code是引數,傳到後臺伺服器
      },
      method:"GET",
       header:{
        "content-type":"application/json"
},
      success: function(result) {
        console.log('request success', result)
      }
    })
這兒有幾個需要注意的地方,

①method有兩種,get和post,它們對應的header中填寫的東西也不一樣,

如果是post,則改成

header:{content-type": "application/x-www-form-urlencoded"},

②content-type是大寫還是小寫,好像也有點不同的地方。

三。後臺伺服器接收到code之後,就通過code和自己開發者後臺獲取到的appid和appsecret來通過http請求向微信伺服器請求獲取openid(使用者的唯一標識)和session_key(會話金鑰)。方法可以參照  

四,生成第三方快取3rd_session,然後之後將這個返回給小程式。

 五小程式接受之後就將獲得的3rd_session存到本地快取中

  這個可以在上邊第二步的success(res)返回的資料中接收,

然後利用wx.setstorage方法存放到快取中(這兒有幾種不同的方式),一般用同步的,通過它的success()的方法還可以確認操作結果。

六,之後使用者進入小程式的時候帶上3rd_session傳送到後臺伺服器,看是不是合法的。

談一下我自己的理解

 ①我認為不管哪種方式都是為了讓後臺可以辨識使用者。登入態就是唯一確認某個使用者。

 微信官方提供的這種使用微信帳號進行標識,因為它之後通過後臺伺服器獲取的openid就可以對每個使用者進行唯一標識。對於小程式來說,不同的使用者的openid是不一樣           的。(還有一個叫unionid,這個是如果小程式綁定了公眾號,那麼這個unionid對於整個公眾號和小程式來說都是唯一的。)

②3rd_session就相當於是一個登入憑證,證明這個使用者曾經登陸過

③微信還提供了一個wx.checksession({})的api,介紹,它對於開發者來說是透明的,

④後臺伺服器生成的3rd_session和微信伺服器返回的session都是有過期時間的。這個要注意。

⑤其實微信的方式也是使用openid來唯一標識每個使用者,只不過openid比較重要,所以不能放在小程式上,所以就得引入一個新的量,就是3rd_session來放在小程式上。