文 |

今天,知曉程序(微信號 )為大家分享服務(wù)器端基于 Java、 實(shí)現(xiàn)的微信小程序登錄系統(tǒng)。

登錄功能是許多小程序必備的一個功能,通過登錄系統(tǒng),我們可以記錄用戶在我們的小程序里一些行為,在后臺我們也可以模糊地確認(rèn)用戶。

在小程序里,微信只向開發(fā)者提供了獲取用戶昵稱、頭像的基礎(chǔ)接口。這兩個值都不能唯一確定用戶,如果需要唯一確定用戶,需要額外獲取 。

獲取到的 雖然唯一,但在開發(fā)者的服務(wù)器的后臺,也不能立刻和確定的用戶進(jìn)行關(guān)聯(lián),需要開發(fā)者的服務(wù)器進(jìn)行綁定。

微信的官方文檔詳細(xì)的介紹了登錄的流程,從流程中我們可以提煉出關(guān)鍵的流程點(diǎn):

小程序端調(diào)用 wx.() 接口,獲取登錄需要用到的 code小程序端通過 wx.(),與開發(fā)者的服務(wù)器進(jìn)行通信開發(fā)者獲取到 code 后,與微信的服務(wù)器進(jìn)行通信,獲取 和 利用隨機(jī)值來作為鍵、利用 和 作為值,保存用戶的登錄狀態(tài)信息服務(wù)器返回隨機(jī)值到小程序的客戶端,以后小程序的請求附帶返回的隨機(jī)值來確保用戶的合法性

首先chatgpt接入微信群教程,我們要構(gòu)造出一個 GET 請求,實(shí)現(xiàn)開發(fā)者服務(wù)器和微信的服務(wù)器的通信:

public static String GET(String url){
  String result = "";
  BufferedReader in = null;
  InputStream is = null;
  InputStreamReader isr = null;
  try {
    URL realUrl = new URL(url);
    URLConnection conn = realUrl.openConnection();
    conn.connect();
    Map> map = conn.getHeaderFields();
    is = conn.getInputStream();
    isr = new InputStreamReader(is);
    in = new BufferedReader(isr);
    String line;
    while ((line = in.readLine()) != null) {
      result += line;
    }
  } catch (Exception e) {
    //異常記錄
  }finally{
    try {
      if(in!=null){
      in.close();
    }
    if(is!=null){
      is.close();
    }
    if(isr!=null){
      isr.close();
    }
    } catch (Exception e2) {
      //異常記錄
    }
  }
  return result;
}

我們在 獲取到 code 的值,然后查看 和 ,將通信接口構(gòu)造完整,并通過 GET 方法來完成和微信服務(wù)器的通信。

如果通信正常我們解析 ,我們就可以獲得 和 。接下來chatgpt接入微信群教程,我們就要保存用戶的登錄狀態(tài)信息了。

Jedis jedis = new Jedis("localhost");
String openid = openid;
String session_key = session_key;
String uid = UUID.randomUUID().toString();
StringBuffer sb = new StringBuffer();
sb.append(openid);
sb.append(","+session_key);
jedis.set(uid, sb.toString());
return uid;

如果需要獲取登錄用戶的用戶名和昵稱chatgpt接入微信群教程,我們還需要注意一個問題:昵稱中的中文可能會亂碼。

這是因?yàn)槲⑿艜?ISO-8859-1 編碼標(biāo)準(zhǔn)讀取中文,而我們需要的是 UTF-8。

對于用戶昵稱亂碼這個問題,我們做一下簡單的處理就可以解決:

String nickNameDecode = new String(nickName.getBytes("ISO-8859-1"),"utf-8");

免責(zé)聲明:本文系轉(zhuǎn)載,版權(quán)歸原作者所有;旨在傳遞信息,不代表本站的觀點(diǎn)和立場和對其真實(shí)性負(fù)責(zé)。如需轉(zhuǎn)載,請聯(lián)系原作者。如果來源標(biāo)注有誤或侵犯了您的合法權(quán)益或者其他問題不想在本站發(fā)布,來信即刪。