企業jsapi_ticket,java舉例

在企業微信開發中,使用 Java 獲取?jsapi_ticket?并生成簽名的步驟如下。以下是完整的 Java 示例代碼。


1. 獲取?jsapi_ticket?的流程

  1. 獲取?access_token

  2. 使用?access_token?獲取?jsapi_ticket

  3. 使用?jsapi_ticket?生成簽名(signature)。


2. Java 示例代碼

以下是一個完整的 Java 示例,展示如何獲取?jsapi_ticket?并生成簽名。

依賴

確保項目中引入了以下依賴(如使用 Maven):

xml

復制

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version>
</dependency>

運行 HTML

代碼實現

java

復制

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;public class WeChatJsApiTicket {// 獲取 access_token 的接口地址private static final String ACCESS_TOKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s";// 獲取 jsapi_ticket 的接口地址private static final String JSAPI_TICKET_URL = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=%s";// 企業 ID 和應用 Secretprivate static final String CORP_ID = "YOUR_CORP_ID";private static final String CORP_SECRET = "YOUR_CORP_SECRET";/*** 發送 HTTP GET 請求*/private static String httpGet(String url) throws IOException {try (CloseableHttpClient httpClient = HttpClients.createDefault()) {HttpGet httpGet = new HttpGet(url);try (CloseableHttpResponse response = httpClient.execute(httpGet)) {HttpEntity entity = response.getEntity();return EntityUtils.toString(entity);}}}/*** 獲取 access_token*/public static String getAccessToken() throws IOException {String url = String.format(ACCESS_TOKEN_URL, CORP_ID, CORP_SECRET);String response = httpGet(url);JSONObject json = JSONObject.parseObject(response);return json.getString("access_token");}/*** 獲取 jsapi_ticket*/public static String getJsApiTicket(String accessToken) throws IOException {String url = String.format(JSAPI_TICKET_URL, accessToken);String response = httpGet(url);JSONObject json = JSONObject.parseObject(response);return json.getString("ticket");}/*** 生成簽名*/public static String generateSignature(String jsapiTicket, String noncestr, String timestamp, String url) {String string = "jsapi_ticket=" + jsapiTicket +"&noncestr=" + noncestr +"&timestamp=" + timestamp +"&url=" + url;try {MessageDigest digest = MessageDigest.getInstance("SHA-1");digest.update(string.getBytes());byte[] messageDigest = digest.digest();StringBuilder hexString = new StringBuilder();for (byte b : messageDigest) {String shaHex = Integer.toHexString(b & 0xFF);if (shaHex.length() < 2) {hexString.append(0);}hexString.append(shaHex);}return hexString.toString();} catch (NoSuchAlgorithmException e) {throw new RuntimeException("SHA-1 algorithm not found");}}public static void main(String[] args) throws IOException {// 1. 獲取 access_tokenString accessToken = getAccessToken();System.out.println("access_token: " + accessToken);// 2. 獲取 jsapi_ticketString jsapiTicket = getJsApiTicket(accessToken);System.out.println("jsapi_ticket: " + jsapiTicket);// 3. 生成簽名String noncestr = UUID.randomUUID().toString();String timestamp = Long.toString(System.currentTimeMillis() / 1000);String url = "https://example.com"; // 當前頁面的 URLString signature = generateSignature(jsapiTicket, noncestr, timestamp, url);System.out.println("noncestr: " + noncestr);System.out.println("timestamp: " + timestamp);System.out.println("signature: " + signature);}
}

3. 代碼說明

  1. 獲取?access_token:

    • 使用企業 ID (CORP_ID) 和應用 Secret (CORP_SECRET) 調用企業微信 API 獲取?access_token

  2. 獲取?jsapi_ticket:

    • 使用?access_token?調用企業微信 API 獲取?jsapi_ticket

  3. 生成簽名:

    • 使用?jsapi_ticket、隨機字符串 (noncestr)、時間戳 (timestamp) 和當前頁面的 URL 生成簽名 (signature)。

  4. SHA-1 加密:

    • 使用 Java 的?MessageDigest?類對字符串進行 SHA-1 加密。


4. 輸出示例

運行代碼后,輸出如下:

復制

access_token: YOUR_ACCESS_TOKEN
jsapi_ticket: YOUR_JSAPI_TICKET
noncestr: 6a8e5f4e-3b1a-4c2d-9f8e-1a2b3c4d5e6f
timestamp: 1698765432
signature: 1f3a5e7b9c2d4f6a8b0c1d2e3f4a5b6c7d8e9f0

5. 注意事項

  1. 緩存?access_token?和?jsapi_ticket:

    • 由于?access_token?和?jsapi_ticket?的有效期均為 7200 秒(2 小時),建議在服務器端緩存它們,避免頻繁調用接口。

  2. URL 參數:

    • 生成簽名時,URL 必須是當前頁面的完整 URL(不包括?#?及其后面部分)。

  3. 安全性:

    • access_token?和?jsapi_ticket?是敏感信息,不要泄露給客戶端或第三方。


通過以上代碼,你可以在 Java 中實現企業微信?jsapi_ticket?的獲取和簽名生成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72114.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Godot4.3】自定義簡易菜單欄節點ETDMenuBar

概述 Godot中的菜單創建是一個復雜的災難性工作&#xff0c;往往無從下手&#xff0c;我也是不止一次嘗試簡化菜單的創建。 從自己去年的發明“簡易樹形數據”用于簡化Tree控件獲得靈感&#xff0c;于是嘗試編寫了用于表示菜單數據的EasyMenuData類&#xff0c;以及對應的純文…

大數據與金融科技:革新金融行業的動力引擎

大數據與金融科技&#xff1a;革新金融行業的動力引擎 在今天的金融行業&#xff0c;大數據與金融科技的結合正在以驚人的速度推動著金融服務的創新與變革。通過精準的數據分析與智能化決策&#xff0c;金融機構能夠更高效地進行風險管理、客戶服務、資產管理等一系列關鍵操作…

二、IDE集成DeepSeek保姆級教學(使用篇)

各位看官老爺好&#xff0c;如果還沒有安裝DeepSeek請查閱前一篇 一、IDE集成DeepSeek保姆級教學(安裝篇) 一、DeepSeek在CodeGPT中使用教學 1.1、Edit Code 編輯代碼 選中代碼片段 —> 右鍵 —> CodeGPT —> Edit Code, 輸入自然語言可編輯代碼&#xff0c;點擊S…

Rohm發布TOLL封裝650V GaN HEMT,引領汽車用GaN器件大規模生產新浪潮

Rohm震撼發布TOLL封裝650V GaN HEMT&#xff0c;引領汽車用GaN器件大規模生產新浪潮。在創新的TOLL&#xff08;TO LeadLess&#xff09;封裝技術的懷抱中&#xff0c;Rohm精心孕育出650V GaN HEMT這一瑰寶&#xff0c;此技術正如一股強勁東風&#xff0c;日益吹拂于高功率處理…

Spring Boot 3.x 基于 Redis 實現郵箱驗證碼認證

文章目錄 依賴配置開啟 QQ 郵箱 SMTP 服務配置文件代碼實現驗證碼服務郵件服務接口實現執行流程 依賴配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…

PHP的學習

PHP的基礎前提【HTML、CSS】 第一步先進行VS cood的下載&#xff1a;Visual Studio Code - Code Editing. Redefined 【選擇適合自己的電腦的版本eg:我就是64位的win】

XML 編輯器:全面指南與最佳實踐

XML 編輯器:全面指南與最佳實踐 引言 XML(可擴展標記語言)編輯器是處理XML文件的關鍵工具,對于開發人員、系統管理員以及任何需要處理XML數據的人來說至關重要。本文將全面介紹XML編輯器的概念、功能、選擇標準以及最佳實踐,旨在幫助讀者了解如何選擇和使用合適的XML編輯…

《Effective Objective-C》閱讀筆記(下)

目錄 內存管理 理解引用計數 引用計數工作原理 自動釋放池 保留環 以ARC簡化引用計數 使用ARC時必須遵循的方法命名規則 變量的內存管理語義 ARC如何清理實例變量 在dealloc方法中只釋放引用并解除監聽 編寫“異常安全代碼”時留意內存管理問題 以弱引用避免保留環 …

ORM Bee V2.5.2.x 發布,支持 CQRS; sql 性能分析;更新 MongoDB ORM分片

Bee, 一個具有分片功能的 ORM 框架. Bee Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鴻蒙) 小巧玲瓏&#xff01;僅 940K, 還不到 1M, 但卻是功能強大&#xff01; V2.5.2 (2025?LTS 版) 開發中... **2.5.2.1 新年 ** 支持 Mong…

springboot之HTML與圖片生成

背景 后臺需要根據字段動態生成HTML&#xff0c;并生成圖片&#xff0c;發送郵件到給定郵箱 依賴 <!-- freemarker模板引擎--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifa…

《從0到1:用Python在鴻蒙系統開發安防圖像分類AI功能》

在人工智能與移動應用深度融合的當下,類目標簽AI功能成為眾多行業提升效率和用戶體驗的關鍵技術。本文聚焦于HarmonyOS NEXT API 12及以上版本,以圖像分類在智能家居安防領域的應用為例,為開發者詳細闡述如何利用Python開發類目標簽AI功能,助力鴻蒙技術在該領域的創新應用。…

【AD】3-10 原理圖PDF導出

文件—智能PDF 多頁原理圖導出 導出設置時選擇工程&#xff0c;可自行選擇導出一頁或多頁原理圖&#xff0c;一般PCB不用導出

【deepseek第一課】從0到1介紹 采用ollama安裝deepseek私有化部署,并實現頁面可視化

【deepseek第一課】從0到1介紹 采用ollama安裝deepseek私有化部署,并實現頁面可視化 1. ollama安裝1.1 linux安裝1.2 windows安裝2. deepSeek支持的7種蒸餾模型2.1 蒸餾模型介紹2.2 7種模型特點2.3 安裝deepseek-r1:14b模型3. openwebui圖形化頁面安裝4. java連接大模型的三…

【在線用戶監控】在線用戶查詢、強退用戶

文章目錄 在線用戶監控在線用戶監控API(RestController)當前在線會話在線用戶查詢強退用戶知識擴展: JwtJwtTokenUtil生成jwt解析token登錄授權的實現:json web token + redis + springboot在線用戶監控 在線用戶監控API(RestController) @RestController @Tag(name = &qu…

超詳細,多圖文介紹redis集群方式并搭建redis偽集群

超詳細&#xff0c;多圖文介紹redis集群方式并搭建redis偽集群 超多圖文&#xff0c;對新手友好度極好。敲命令的過程中&#xff0c;難免會敲錯&#xff0c;但為了截好一張合適的圖&#xff0c;一旦出現一點問題&#xff0c;為了好的演示效果&#xff0c;就要從頭開始敲。且看且…

Hue Load Balance配置

個人博客地址&#xff1a;Hue Load Balance配置 | 一張假鈔的真實世界 直接上配置&#xff1a; server {server_name 192.168.72.31;listen 8001;charset utf-8;proxy_connect_timeout 600s;proxy_read_timeout 600s;proxy_send_timeout 600s;location / {proxy_set_header H…

992. K 個不同整數的子數組

目錄 一、題目二、思路2.1 解題思路2.2 代碼嘗試2.3 疑難問題 三、解法四、收獲4.1 心得4.2 舉一反三 一、題目 二、思路 2.1 解題思路 2.2 代碼嘗試 class Solution { public:int subarraysWithKDistinct(vector<int>& nums, int k) {//需要有數據結構來存儲數組…

領域驅動設計:事件溯源架構簡介

概述 事件溯源架構通常由3種應用設計模式組成,分別是:事件驅動(Event Driven),事件溯源(Event Source)、CQRS(讀寫分離)。這三種應用設計模式常見于領域驅動設計(DDD)中,但它們本身是一種應用設計的思想,不僅僅局限于DDD,每一種模式都可以單獨拿出來使用。 E…

PT2035 TWS 藍牙耳機雙觸控雙輸出 IC

1. 產品概述 PT2035 是一款支持入耳檢測的藍牙耳機專用觸摸芯片&#xff0c;該芯片具有寬工作電壓、低功耗、高抗 干擾能力的特性。 2. 主要特性 工作電壓范圍&#xff1a; 2.4~5.5V 待機電流約 2.5uAV DD3V/CMOD5nF 入耳有效&#xff0c;無觸摸時工作電流約 8uAV DD3…

AI編程界的集大成者——通義靈碼AI程序員

一、引言 隨著軟件行業的快速發展和技術的進步&#xff0c;人工智能&#xff08;AI&#xff09;正在成為軟件開發領域的一個重要組成部分。近年來&#xff0c;越來越多的AI輔助工具被引入到開發流程中&#xff0c;旨在提高效率、減少錯誤并加速創新。在這樣的背景下&#xff0…