文 |

今天,知曉程序(微信號 )為大家分享服務器端基于 Java、 實現的微信小程序登錄系統。

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

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

獲取到的 雖然唯一,但在開發者的服務器的后臺,也不能立刻和確定的用戶進行關聯,需要開發者的服務器進行綁定。

微信的官方文檔詳細的介紹了登錄的流程,從流程中我們可以提煉出關鍵的流程點:

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

首先chatgpt接入微信群教程,我們要構造出一個 GET 請求,實現開發者服務器和微信的服務器的通信:

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 的值,然后查看 和 ,將通信接口構造完整,并通過 GET 方法來完成和微信服務器的通信。

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

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接入微信群教程,我們還需要注意一個問題:昵稱中的中文可能會亂碼。

這是因為微信會用 ISO-8859-1 編碼標準讀取中文,而我們需要的是 UTF-8。

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

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

免責聲明:本文系轉載,版權歸原作者所有;旨在傳遞信息,不代表本站的觀點和立場和對其真實性負責。如需轉載,請聯系原作者。如果來源標注有誤或侵犯了您的合法權益或者其他問題不想在本站發布,來信即刪。