中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot中怎么獲取用戶openid

發布時間:2021-07-24 14:51:45 來源:億速云 閱讀:752 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關springboot中怎么獲取用戶openid,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

openid可以標識一個用戶,session_key會變,所以來獲取一下openid。

openid不能在微信小程序中直接獲取,需要后臺發送請求到微信的接口,然后微信返回一個json格式的字符串到后臺,后臺處理之后,再返回到微信小程序。

發布的小程序需要https的域名,而測試的時候可以使用http。

小程序在app.js中,修改login()中的內容:

// 登錄  wx.login({   success: res => {    // 發送 res.code 到后臺換取 openId, sessionKey, unionId    if (res.code) {     wx.request({      url: 'http://localhost:84/user/login',      method: 'POST',      data: {       code: res.code      },      header: {       'content-type': 'application/x-www-form-urlencoded'      },      success(res) {       console.log("openid:"+res.data.openid);       if (res.data.openid != "" || res.data.openid!=null){        // 登錄成功        wx.setStorageSync("openid", res.data.openid);//將用戶id保存到緩存中        wx.setStorageSync("session_key", res.data.session_key);//將session_key保存到緩存中       }else{        // 登錄失敗        // TODO 跳轉到錯誤頁面,要求用戶重試        return false;       }      }     })    } else {     console.log('獲取用戶登錄態失敗!' + res.errMsg)    }   }  })

這里請求的http://localhost:84/user/login

后臺的處理類:

package com.ft.feathertrade.handler;import com.fasterxml.jackson.databind.ObjectMapper;import com.ft.feathertrade.entity.OpenIdJson;import com.ft.feathertrade.utils.HttpUtil;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.io.IOException;@RestControllerpublic class LoginHandler {  private String appID = "";  private String appSecret = "";  @PostMapping("/user/login")  public String userLogin(@RequestParam("code") String code) throws IOException {    String result = "";    try{//請求微信服務器,用code換取openid。HttpUtil是工具類,后面會給出實現,Configure類是小程序配置信息,后面會給出代碼      result = HttpUtil.doGet(          "https://api.weixin.qq.com/sns/jscode2session?appid="              + this.appID + "&secret="              + this.appSecret + "&js_code="              + code              + "&grant_type=authorization_code", null);    }    catch (Exception e) {      e.printStackTrace();    }    ObjectMapper mapper = new ObjectMapper();    OpenIdJson openIdJson = mapper.readValue(result,OpenIdJson.class);    System.out.println(result.toString());    System.out.println(openIdJson.getOpenid());    return result;  }}

HttpUtil工具類:

package com.ft.feathertrade.utils;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map.Entry;import java.util.Set;import org.apache.commons.httpclient.HttpStatus;//此類需要添加maven依賴或jar包/** 將此依賴添加到pom.xml中 <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> **/public class HttpUtil {  public static String doGet(String urlPath, HashMap<String, Object> params)      throws Exception {    StringBuilder sb = new StringBuilder(urlPath);    if (params != null && !params.isEmpty()) { // 說明有參數      sb.append("?");      Set<Entry<String, Object>> set = params.entrySet();      for (Entry<String, Object> entry : set) { // 遍歷map里面的參數        String key = entry.getKey();        String value = "";        if (null != entry.getValue()) {          value = entry.getValue().toString();          // 轉碼          value = URLEncoder.encode(value, "UTF-8");        }        sb.append(key).append("=").append(value).append("&");      }      sb.deleteCharAt(sb.length() - 1); // 刪除最后一個&    }    // System.out.println(sb.toString());    URL url = new URL(sb.toString());    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    conn.setConnectTimeout(5000); // 5s超時    conn.setRequestMethod("GET");    if (conn.getResponseCode() == HttpStatus.SC_OK) {// HttpStatus.SC_OK ==      // 200      BufferedReader reader = new BufferedReader(new InputStreamReader(          conn.getInputStream()));      StringBuilder sbs = new StringBuilder();      String line;      while ((line = reader.readLine()) != null) {        sbs.append(line);      }      return sbs.toString();    }    return null;  }}

OpenIdJson的實體類:

package com.ft.feathertrade.entity;public class OpenIdJson {  private String openid;  private String session_key;  public String getOpenid() {    return openid;  }  public void setOpenid(String openid) {    this.openid = openid;  }  public String getSession_key() {    return session_key;  }  public void setSession_key(String session_key) {    this.session_key = session_key;  }}

關于springboot中怎么獲取用戶openid就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

韶山市| 萍乡市| 云浮市| 吉木乃县| 佳木斯市| 于田县| 黄龙县| 屏边| 德阳市| 攀枝花市| 咸宁市| 柘荣县| 观塘区| 会同县| 尚义县| 从江县| 荃湾区| 竹溪县| 宣武区| 崇仁县| 基隆市| 独山县| 抚州市| 东光县| 祁门县| 自治县| 娄烦县| 如东县| 漳州市| 永州市| 康马县| 石渠县| 越西县| 林口县| 华亭县| 蕉岭县| 枞阳县| 绥棱县| 同仁县| SHOW| 广南县|