国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序授權登錄流程

這篇具有很好參考價值的文章主要介紹了微信小程序授權登錄流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

自我介紹

我是IT果果日記,微信公眾號請搜索 IT果果日記
一個普通的技術宅,定期分享技術文章,歡迎點贊、關注和轉發(fā),請多關照。

首先,我們要了解什么是微信小程序登錄?它的作用是什么?

用戶登錄

微信小程序登錄是為了讓開發(fā)者的服務器獲取用戶的openId以及session_key的令牌。

請不要將微信小程序的用戶登錄理解為傳統(tǒng)意義上的登錄。雖然從大的方向上講,登錄都是為了確認用戶的身份、拿到用戶的唯一身份標識,但是微信小程序的登錄流程和傳統(tǒng)的賬號密碼流程不太一樣。當你進入小程序后,不需要輸入任何賬號密碼,開發(fā)者服務器就可以獲取你的openId標識。微信小程序的登錄流程遠比傳統(tǒng)的賬號密碼登錄要復雜。

微信小程序提供了wx.login(OBJECT)方法用于用戶登錄。wx.login方法的主要目的是拿到用戶的openId和用戶本次登錄的session_key。

openId是用戶對于當前小程序的身份標識,類似于我們自己產(chǎn)品里的用戶id號,只不過在微信里有自己的用戶賬戶體系,你可以使用這個openId作為用戶的身份標識。當然,也可以建立一套自己的用戶標識,不過當你需要調用微信開放接口(比如支付、發(fā)送模板消息)時,還是必須知道用戶的openId。

session_key是本次用戶登錄的會話密鑰,通常用來對用戶的通信數(shù)據(jù)進行加解密。

到目前為止,如果對于openId和session_key的概念還很模糊,不知道這兩者的用處,沒有關系,在后面的篇幅里我們將陸續(xù)講解和使用這兩個參數(shù)。

首先要在開發(fā)者服務器拿到openId和session_key。圖1所示為獲取openId和session_key的流程圖。這張圖非常重要。

微信小程序授權登錄流程,微信小程序,微信小程序,小程序,微信,Powered by 金山文檔

圖1 登錄并獲取session_key和openId的流程圖

要獲取session_key和openId,首先需要在小程序中調用wx.login,并獲取code;隨后將code發(fā)送到開發(fā)者服務器,并同appid和appsecret一起發(fā)送到微信服務器,微信服務器會返回我們需要的session_key和openId。

我們結合具體代碼看看,實現(xiàn)上述流程并最終拿到session_key和openId。

wx.login({
  success: res => {
    // 發(fā)送 res.code 到后臺換取 openId, sessionKey, unionId
    console.log('code:' + res.code);
    wx.request({
      url:"http://localhost:8080/wxopen/getOpenIdAndSessionKey",
      data:{
        code: res.code
      },
      success: function (res) {
        console.log(res.data);
      }
    })
  }
})

這里調用了wx.login方法,這個方法沒有參數(shù),只有回調函數(shù)。success回調函數(shù)是當微信服務器成功返回結果時調用的函數(shù)。

先來看success回調函數(shù)返回參數(shù)的參數(shù)說明。

  • errMsg 錯誤消息。

  • code 開發(fā)者需要將code發(fā)送到開發(fā)者服務器后臺,使用code換取session_key api,將code換成openId和session_key。

重點是返回值code。code是一把鑰匙,是得到openId和session_key的關鍵。code有效期只有5分鐘,如果在5分鐘之內還沒有用code換取openId和session_key,那么就不能再使用了。

可不可以直接在小程序內部用code去微信服務器換取openId和session_key呢?理論上是可以的,但這完全沒有意義。無論出于安全性還是實用性,都應該將code發(fā)送到開發(fā)者服務器由開發(fā)者服務器獲取openId和session_key。

所以,我們在wx.login的success回調函數(shù)中再次發(fā)起了一個wx.request請求,將code發(fā)送到了本地服務器中。在編寫后端接口代碼前,首先來學習如何使用code調用微信服務器獲取openId和session_key。

微信提供了一個https接口用于code換取openId以及session_key。接口地址如下:

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

需要以下4個參數(shù)才能正確調用該接口:

  • appid 小程序唯一標識。

  • secret 小程序的app secret。

  • js_code 登錄時獲取的code。

  • grant_type 填寫為authorization_code。

appid和secret均來自于微信小程序賬號,是2個固定的字符串;js_code是我們在小程序客戶端調用wx.login時返回的code;grant_type固定為authorization_code即可。下面編寫服務端代碼。

Map<String,Object> map = new HashMap<>(7);
map.put("appid",wxAppId);
map.put("secret",wxSecret);
map.put("js_code", param.getCode());
map.put("grant_type",grantType);
WxCode2SessionRet sessionRet = null;
try{
    String url = "https://api.weixin.qq.com/sns/jscode2session";
    String info = HttpUtil.get(url, map);
    sessionRet = JSON.parseObject(info, WxCode2SessionRet.class);
      log.info("openid = {}, session_key = {}", sessionRet.getOpenid(), 
      sessionRet.getSession_key());
} catch (Exception e){
    log.error("code2session失敗", e);
    return null;
}

WxCode2SessionRet.java

@Data
public class WxCode2SessionRet implements Serializable {
    private String openid;
    private String session_key;
    private String unionid;
    private String errcode;
    private String errmsg;
}

以上代碼請開發(fā)者自行將appid和appsecret替換為自己的appid和secret。看到后端代碼,開發(fā)者可能就會明白為什么不能在小程序客戶端中換取openId和session_key。因為調用換取接口需要敏感數(shù)據(jù)appid和appsecret,特別是secret,一定不可以放在客戶端中,這也是騰訊不允許的,是不會通過微信小程序審核的。

要特別注意,以上代碼為了演示效果,所以將拿到的openId以及session_key返回到了客戶端。但在真實的項目中,將session_key和openId返回客戶端是極其危險的,也完全沒有必要。因為需要使用session_key和openId的場景都會被放置在服務器進行,所以將這兩個參數(shù)返回小程序中沒有任何意義,反而會增加數(shù)據(jù)泄露的風險。

session_key肯定是有失效期的。要注意的是,在session_key的有效期內,開發(fā)者最好不要重復調用wx.login接口、不斷用code換取session_key,而應該將session_key保存在服務器中。等到session_key失效后,再重新獲取新的session_key。

那么如何知道session_key是否已經(jīng)過期呢?小程序提供了一個wx.checkSession(OBJECT)用來校驗session_key是否過期。只有在session_key確實過期后,才會再次調用wx.login。wx.checkSession的使用非常簡單,下面直接給出示例代碼。如圖2所示。

微信小程序授權登錄流程,微信小程序,微信小程序,小程序,微信,Powered by 金山文檔

圖2 檢查 session 是否過期

這里還要注意,wx.login得到的code只能使用一次,一旦你使用code換取了openId和session_key,這個code就會馬上失效,不能再次使用。當然,如果5分鐘內這個code還沒有被使用,那么也會失效。

總結

微信小程序用戶登錄主要做了兩件事情:

  • 客戶端調用微信小程序登錄接口wx.login獲取code;

  • 調用服務器端接口,服務端接口帶上code參數(shù)和本地保存的appId、secret,從微信服務器獲取到openId和session_key

另外,session_key有過期時間,我們可以通過調用wx.checkSession(OBJECT)接口校驗session_key何時過期。

那么,拿到了 openId 和 session_key 該怎么使用呢?關注我不迷路,答案在我的其他文章里可以找到。

請聯(lián)系我

我是IT果果日記,微信公眾號請搜索 IT果果日記
一個普通的技術宅,定期分享技術文章,歡迎點贊、關注和轉發(fā),請多關照。

微信公眾號 IT果果日記

https://gitee.com/chenzhaoplus

https://github.com/chenzhaoplus

https://blog.csdn.net/cz285933169?spm=1010.2135.3001.5421文章來源地址http://www.zghlxwxcb.cn/news/detail-627122.html

到了這里,關于微信小程序授權登錄流程的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 微信小程序-微信授權登錄

    微信小程序-微信授權登錄

    小程序可以通過微信官方提供的登錄能力方便地獲取微信提供的用戶身份標識,快速建立小程序內的用戶體系 觸發(fā)授權登錄 : 用戶在小程序中觸發(fā)登錄操作,通常通過點擊登錄按鈕或執(zhí)行相關操作。 授權彈窗 : 小程序彈出授權登錄的彈窗,要求用戶授權小程序訪問其微信賬

    2024年02月08日
    瀏覽(28)
  • 微信小程序——授權登錄

    在微信小程序中,授權登錄通常是指用戶允許小程序獲取其微信用戶信息(如昵稱、頭像等)的過程。以下是微信小程序授權登錄的基本步驟以及相關API的使用: 步驟一:獲取用戶授權 在小程序中,你需要創(chuàng)建一個按鈕或其他用戶觸發(fā)的UI元素,以觸發(fā)授權登錄操作。 創(chuàng)建

    2024年02月04日
    瀏覽(93)
  • 微信小程序授權登錄

    微信小程序授權登錄

    登錄流程時序 說明: 1.小程序端調用? wx.login() ?獲取臨時登錄憑證code?,并回傳到開發(fā)者服務器。 2.服務器調用? code2Session ?接口,換取?用戶唯一標識 OpenID?和?會話密鑰 session_key。 之后開發(fā)者服務器可以根據(jù)用戶標識來生成自定義登錄態(tài),用于后續(xù)業(yè)務邏輯中前后端交互

    2024年02月07日
    瀏覽(19)
  • uniapp(vue3) - 詳解微信小程序平臺用戶授權登錄全流程,uniapp v3版本中小程序端開發(fā)下用戶點擊登錄后獲取手機號/昵稱/性別/頭像等信息完成登錄(提供完整示例代碼,一鍵復制開箱即用)

    uniapp(vue3) - 詳解微信小程序平臺用戶授權登錄全流程,uniapp v3版本中小程序端開發(fā)下用戶點擊登錄后獲取手機號/昵稱/性別/頭像等信息完成登錄(提供完整示例代碼,一鍵復制開箱即用)

    在uniapp(v3)微信小程序端開發(fā)中,超詳細實現(xiàn)用戶授權登錄完整功能源碼,用戶授權后獲取手機號/昵稱/頭像/性別等,提供完整思路流程及邏輯講解。 你也可以直接復制粘貼,然后改下參數(shù)放到你的項目中去就行。 做功能之前,先

    2024年02月05日
    瀏覽(33)
  • 微信小程序授權流程

    微信小程序授權流程

    小程序中的部分接口,比如地理位置、錄音、攝像頭、用戶信息等,需要用戶授權后,才可以調用。把這些接口按使用范圍分成多個 scope ,用戶選擇對 scope 來進行授權,當授權給一個 scope 之后,其對應的所有接口都可以直接使用。 此類接口調用時: 如果用戶未接受或拒絕

    2024年02月09日
    瀏覽(24)
  • 微信小程序授權登錄詳細解析

    微信小程序授權登錄詳細解析

    一、首先在wxml頁面定義一個普通按鈕,在用bindtap定義一個事件 ?二、去到js頁面,使用wx.getUserProfile獲取到用戶信息,主要獲取微信昵稱和微信頭像 ?三、使用wx.login獲取code發(fā)送請求 ? 四、將code、nickName、avatarUrl傳入到后端 ?五、后端接受到code、用戶頭像、用戶昵稱 ?六、

    2024年02月09日
    瀏覽(30)
  • UNIAPP---實現(xiàn)微信小程序登錄授權和手機號授權(uniapp做微信小程序)

    UNIAPP---實現(xiàn)微信小程序登錄授權和手機號授權(uniapp做微信小程序)

    描述:uniapp開發(fā)小程序,先授權用戶信息后再出現(xiàn)手機號授權的頁面進行手機號授權。完成后返回上一頁面并把信息存入后臺以及前臺緩存中,方便使用。 1.在uniapp的manifest.json進行微信小程序配置 2.封裝request請求api.js(如果已封裝可跳過) 3.封裝微信授權登錄以及獲取手機

    2024年02月11日
    瀏覽(36)
  • 微信小程序實現(xiàn)授權登錄及退出

    1.登錄獲取用戶昵稱,頭像 2.創(chuàng)建云函數(shù) 右擊新建文件夾cloud 在根目錄project.config.json中添加: 右擊文件夾cloud選擇當前環(huán)境 右擊文件夾cloud新建Node.js云函數(shù),命名login 在新建文件夾login的index.js文件中: 右擊login文件夾選擇上傳并部署:云端安裝依賴(不上傳node_modules),顯

    2024年02月08日
    瀏覽(19)
  • 微信小程序手機號授權登錄

    微信小程序手機號授權登錄

    微信小程序,手機號授權登錄需求。 大體流程是這樣的: 小程序端使用 getPhoneNumber 向微信平臺獲取授權 通過微信授權后,小程序端接收微信授權后的回調 小程序攜帶微信的回調請求自己的服務端 服務端請求微信獲取手機號并將手機號回調給小程序端 具體步驟和代碼如下:

    2024年02月13日
    瀏覽(21)
  • 微信小程序-授權登錄(手機號碼)

    微信小程序-授權登錄(手機號碼)

    template ?? ?view class=\\\"work-container\\\" ?? ??? ?view class=\\\"login\\\" ?? ??? ??? ?view class=\\\"content\\\" ?? ??? ??? ??? ?button class=\\\"button_wx\\\" open-type=\\\"getPhoneNumber\\\" @getphonenumber=\\\"getPhoneNumber\\\" ?? ??? ??? ??? ??? ?u-icon name=\\\"weixin-fill\\\" color=\\\"#FFFFFF\\\" size=\\\"50\\\"/u-icon ?? ??? ??? ??? ??? ?

    2024年02月06日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包