<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          springboot第61集:Jenkins-Boss萬字挑戰(zhàn),一文讓你走出微服務(wù)迷霧...

          共 18273字,需瀏覽 37分鐘

           ·

          2024-04-11 03:59

                
                名詞 CONTAINER ID(容器ID)
          名詞 IMAGE ID(鏡像ID)

          cat /etc/os-release //查看系統(tǒng)信息
          pwd //查看當(dāng)前路徑
          ls //查看當(dāng)前目錄文件
          docker -v //查看docker版本
          docker-compose up -d //在后臺運(yùn)行(取消-d是在控制臺運(yùn)行)
          docker-compose stop //所有容器停止運(yùn)行
          docker ps -a //查看正在運(yùn)行的容器
          docker images //查看安裝的鏡像
          docker stop [CONTAINER ID] //停掉運(yùn)行的容器
          docker rm [CONTAINER ID] //刪除運(yùn)行的容器
          systemctl status docker  //查看docker狀態(tài)
          systemctl stop docker    //停止docker
          systemctl start docker    //啟動docker
          systemctl restart docker    //重啟docker

          Docker + Jenkins + Nginx 實戰(zhàn)前端自動化部署

          6a8959e5766bef5e3b1950bee3ca3fd6.webpimage.png
                
                version: '3.8'
          # 執(zhí)行腳本;docker-compose -f docker-compose-v1.0.yml up -d
          services:
            jenkins:
              image: jenkins/jenkins:2.439
              container_name: jenkins
              privilegedtrue
              user: root
              ports:
                - "9090:8080"
                - "50001:50000"
              volumes:
                - ./jenkins_home:/var/jenkins_home # 如果不配置到云服務(wù)器路徑下,則可以配置 jenkins_home 會創(chuàng)建一個數(shù)據(jù)卷使用
                - /var/run/docker.sock:/var/run/docker.sock
                - /usr/bin/docker:/usr/local/bin/docker
                - ./maven/conf/settings.xml:/usr/local/maven/conf/settings.xml # 這里只提供了 maven 的 settings.xml 主要用于修改 maven 的鏡像地址
                - ./jdk/jdk1.8.0_202:/usr/local/jdk1.8.0_202 # 提供了 jdk1.8,如果你需要其他版本也可以配置使用。
              environment:
                - JAVA_OPTS=-Djenkins.install.runSetupWizard=false # 禁止安裝向?qū)А溉绻枰艽a則不要配置」docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
              restart: unless-stopped

          volumes:
            jenkins_home:

          Jenkins-Mac

          9615f79ee6eede4941397d098dc50d87.webpimage.png
                
                1、安裝jenkins

          brew install jenkins

          2、鏈接launchd配置文件

          ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents

          ln -sfv /usr/local/opt/jenkins-lts/*.plist ~/Library/LaunchAgents

          3、啟動jenkins

          launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

          launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist

          4、停止jenkins

          launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

          launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist

          訪問:http://localhost:8080 
          清華大學(xué)鏡像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

          54cc3b2c16587f35f79c0d74d417f739.webpimage.png fb84e2c7f0ed1553235824cc4ed6d68d.webpimage.png 6c0e4ff5b055f488d5d6e6a92e63270a.webpimage.png 75df41da4e427a37e8c5863699def2a2.webpimage.png 43d5933e39c35a22e15fb3ccf0f1d823.webpimage.png f6e6bc462e41134b6e5df0a5808eef87.webpimage.png 4a44ca4124100a447606fbcee0cd4660.webpimage.png 339ee35cee723df6f01d6349b3df0efd.webpimage.png
                
                tar -xvzf jdk-8u281-linux-x64.tar.gz
          vi /etc/profile.d/java8.sh
          export JAVA_HOME=/usr/local/java/jdk1.8.0_281
          export JAVA_BIN=/usr/local/java/jdk1.8.0_281/bin
          export PATH=$PATH:$JAVA_HOME/bin
          export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
          export JAVA_HOME JAVA_BIN PATH CLASSPATH
          source /etc/profile
          java -version

          tar -xvzf apache-maven-3.6.3-bin.tar.gz
          mv apache-maven-3.6.3 maven3
          vi /etc/profile

          MAVEN_HOME=/usr/local/tools/maven3 
          export MAVEN_HOME 
          export PATH=${PATH}:${MAVEN_HOME}/bin

          source /etc/profile 
          mvn -version
          • 添加訪問憑據(jù):點擊添加,添加訪問認(rèn)證(我是用的UserName+Password模式也可以選擇其他方式)
          9a5111f9ecc347a8d84f4c7746dacb60.webpimage.png 4e4ca9b3f96667e3ee0e5fcafc670dbe.webpimage.png
          • 源碼管理:選擇Git填寫倉庫地址,并添加訪問賬號和密碼或者秘鑰
          c737811dc2fe93be1f2620a90e235e79.webpimage.png 7f445d835b90fdcdc37108a4844c2e53.webpimage.png 289affb4e55374a2046de5ca38b99f82.webpimage.png 93cf4ead650426e45beb74730164813a.webpimage.png 1326aacc727d955e3c12edac749685ce.webpimage.png 8244c3ce750d0d96568bd726ed326eef.webpimage.png 0f7c060f701f45d316d4a1f0ea75df0b.webpimage.png 0daf5f5a55f3aece45935da7b660a903.webpimage.png

          Jenkins是開源CI&CD軟件領(lǐng)導(dǎo)者,是Devops神器

          安裝Jenkins->編寫pipeline腳本->編寫Dockerfile腳本。

                
                FROM openjdk:8-jdk-alpine

          MAINTAINER [email protected]

          ENV TZ=Asia/Shanghai
          RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && mkdir -p /esms

          WORKDIR /esms

          EXPOSE 8090

          ADD ./target/esms.jar ./

          CMD java -Djava.security.egd=file:/dev/./urandom -jar esms.jar

          951386eda99a70ea34d3ff911884d4b3.webpimage.png
                
                docker run -u root -itd --name jenkins -p 6001:8080 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /volume1/docker/jenkins:/var/jenkins_home jenkins/jenkins

          docker pull jenkins/jenkins

          • docker-ce 18.09.1(務(wù)必使用docker-ce,老版本的docker會導(dǎo)致Jenkins中無法使用docker daemon)

          流水線+docker,流水線可以讓項目發(fā)布流程更加清晰,docker可以大大減少Jenkins配置。

          盡量減少Jenkins的配置和發(fā)布腳本的書寫。

          CPU使用率、內(nèi)存使用率和磁盤使用率的提高通常與系統(tǒng)中發(fā)生的特定操作和情況相關(guān)。以下是一些常見情況和操作,可能會導(dǎo)致這些資源的使用率增加:

          1. CPU使用率增加

          • 運(yùn)行計算密集型任務(wù):例如,執(zhí)行大量數(shù)學(xué)計算、加密解密操作或圖像處理。
          • 運(yùn)行多個并發(fā)應(yīng)用程序:同時運(yùn)行多個應(yīng)用程序或服務(wù),尤其是需要大量計算資源的應(yīng)用程序,可能會導(dǎo)致CPU使用率增加。
          • 資源競爭:如果系統(tǒng)上運(yùn)行了多個高優(yōu)先級的任務(wù)或進(jìn)程,它們可能會競爭CPU資源,導(dǎo)致CPU使用率上升。

          內(nèi)存使用率增加

          • 運(yùn)行內(nèi)存密集型應(yīng)用程序:例如,大型數(shù)據(jù)庫、緩存服務(wù)或虛擬機(jī)。
          • 創(chuàng)建大型數(shù)據(jù)結(jié)構(gòu):例如,加載大型文件或數(shù)據(jù)集到內(nèi)存中。
          • 內(nèi)存泄漏:如果應(yīng)用程序存在內(nèi)存泄漏問題,內(nèi)存使用率可能會持續(xù)增加,直到系統(tǒng)耗盡可用內(nèi)存。

          磁盤使用率增加

          • 寫入大量數(shù)據(jù):例如,進(jìn)行大規(guī)模的日志記錄、數(shù)據(jù)庫寫入操作或文件傳輸。
          • 讀取大量數(shù)據(jù):例如,從磁盤加載大型文件或執(zhí)行大型數(shù)據(jù)庫查詢。
          • 運(yùn)行IO密集型應(yīng)用程序:例如,視頻編碼、解碼或批量文件處理。
          • 文件系統(tǒng)碎片化:如果文件系統(tǒng)碎片化嚴(yán)重,可能會導(dǎo)致文件讀取和寫入操作變慢,進(jìn)而導(dǎo)致磁盤使用率增加。
          • 查看某個端口是否開放:netstat -lnt | grep 80
          • 查看nginx配置是否正確:nginx -t
          • 查看nginx是否正常啟動:ps -ef | grep nginx
          • 查看防火墻狀態(tài): systemctl status firewalld
          • 啟動防火墻: systemctl start firewalld
          • 停止防火墻: systemctl stop firewalld
          • 永久停用: systemctl disable firewalld
          • 啟用防火墻: systemctl enable firewalld
          • 查看某個端口占用情況:netstat –apn | grep 8080
          • 升級版本內(nèi)核:yum update -y
                
                docker run -p 3306:3306 --restart=always -e TZ="Asia/Shanghai" \
          --name mymysql -v /usr/local/gourd/docker/mysql/conf:/etc/mysql/conf.d \
          -v /usr/local/gourd/docker/mysql/logs:/logs \
          -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

          docker run -p 8080:8080 --name gourdtomcat \
          --restart=always -e TZ="Asia/
          Shanghai" \
          -v /docker/tomcat/test:/usr/local/tomcat/webapps/test -d tomcat

           docker run -p 6379:6379 --restart=always -e TZ="
          Asia/Shanghai" \
           -v /usr/local/gourd/docker/redis/data:/data \
           -v /usr/local/gourd/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
           --name myredis -d redis redis-server --appendonly yes
           
           docker run --name gourdnginx -p 80:80 \
           --restart=always -e TZ="
          Asia/Shanghai" -d \
           -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
           -v $PWD/logs:/var/log/nginx nginx
                
                // 查看運(yùn)行中的容器
          docker ps
          // 查看所有的容器
          docker ps -a
          // 搜索鏡像
          docker search keyword
          // 例:docker search mysql
          // 查看下載的鏡像
          docker iamges
          // 啟動容器
          docker start [容器名/容器ID]
          // 停止容器
          docker stop/kill [容器名/容器ID]
          // 重啟容器
          docker restart [容器名/容器ID]
          // 刪除已停止的容器
          docker rm [容器名/容器ID]
          // 強(qiáng)制刪除容器
          docker rm -f [容器名/容器ID]
          // 刪除鏡像
          docker rmi 鏡像id
          // 查看容器日志
          docker logs [容器名/容器ID]
          // 查看容器運(yùn)行狀態(tài)信息
          docker stats
          // 獲取容器/鏡像的元數(shù)據(jù)
          docker inspect [OPTIONS] NAME|ID [NAME|ID...]
          // 查看容器中運(yùn)行的進(jìn)程信息,支持 ps 命令參數(shù)
          docker top [OPTIONS] CONTAINER [ps OPTIONS]
          // 將宿主機(jī)目錄拷貝到容器目錄
          docker cp [path1] [容器ID]:[path2]
          // 將容器目錄拷貝到宿主機(jī)目錄
          docker cp [容器ID]:[path2] [path1]
          1. Web 應(yīng)用程序,如 Nginx、Apache、Node.js、Tomcat 等。
          2. 數(shù)據(jù)庫,如 MySQL、PostgreSQL、MongoDB 等。
          3. 消息隊列,如 RabbitMQ、Kafka 等。
          4. 緩存,如 Redis、Memcached 等。
          5. 日志管理,如 ELK(Elasticsearch、Logstash、Kibana) 等。
          6. 容器管理,如 Kubernetes、Docker Compose 等。
                
                docker search postgres
          docker pull postgres
          docker images

          [root@localhost ~]$ cd /data/
          [root@localhost data]$ mkdir postgres
          [root@localhost postgres]$ pwd
          /data/postgres

          docker run --name postgresql --privileged -e POSTGRES_PASSWORD=password -p 15433:5432 -v /data/postgres:/var/lib/postgresql/data -d postgres

          docker ps -a

          docker pull postgres
          docker volume create postgre-data
          docker run -id --name=postgresql -v postgre-data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_PASSWORD=123456 -e LANG=C.UTF-8 postgres

                
                1 搜索鏡像 docker search <鏡像名稱>
          2 下載鏡像 docker pull <鏡像名稱>:<標(biāo)簽>
          3 運(yùn)行容器 docker run <選項> <鏡像名稱>:<標(biāo)簽>
          4 配置容器 docker exec <容器名稱> <命令>
          5 保存容器 docker commit <容器名稱> <新鏡像名稱>:<標(biāo)簽>
          6 導(dǎo)出容器 docker save -o <文件名稱> <鏡像名稱>:<標(biāo)簽>
          7 導(dǎo)入容器 docker load -i <文件名稱>
          e7a81aee2d237c79648b7ed0f16ef17a.webpimage.png

          Navicat for PostgreSQL 是一個簡單易用的 PostgreSQL 數(shù)據(jù)庫開發(fā)圖形工具。從編寫簡單的 SQL 查詢到開發(fā)復(fù)雜的數(shù)據(jù)庫,Navicat for PostgreSQL 旨在滿足廣泛的用戶需求,從 PostgreSQL 初學(xué)者到經(jīng)驗豐富的開發(fā)人員。連接到本地/遠(yuǎn)程 PostgreSQL 服務(wù)器,并與 Amazon Redshift、Amazon Aurora、Amazon RDS、Google Cloud 和 Microsoft Azure 等云數(shù)據(jù)庫以及所有 PostgreSQL 數(shù)據(jù)庫對象兼容。

          942ff7b244db8a07c280a26bf5022960.webpimage.png
          1. Apache Bench (ab) :Apache Bench是一個簡單而強(qiáng)大的HTTP性能測試工具,它通常隨著Apache Web服務(wù)器一起提供。您可以使用Homebrew來安裝它:brew install ab。
          2. Wrk:Wrk是一個現(xiàn)代的HTTP性能測試工具,具有線程化設(shè)計和支持Lua腳本等特性。您可以使用Homebrew來安裝它:brew install wrk。
          3. Siege:Siege是另一個流行的HTTP性能測試工具,具有簡單易用的特性。您可以使用Homebrew來安裝它:brew install siege。
          4. Vegeta:Vegeta是一個命令行工具,用于基于HTTP進(jìn)行負(fù)載測試和性能分析。您可以使用Homebrew來安裝它:brew install vegeta
          5. JMeter:Apache JMeter是一個功能強(qiáng)大的Java應(yīng)用程序,用于執(zhí)行各種負(fù)載測試和性能測量,不僅限于HTTP。您可以從官方網(wǎng)站下載并手動安裝它:Apache JMeter。

          創(chuàng)建MQTT pub Sampler錄入要發(fā)送MQTT的topic,如果需要發(fā)送不同數(shù)據(jù),可以創(chuàng)建一個CVS,從表里獲取數(shù)據(jù)。這時候在Pub sampler 里就需要使用${}來獲取數(shù)據(jù),字符串要加“”。

          如果要模擬多個設(shè)備,那就創(chuàng)建多個線程組即可。如果想要測試MQTT服務(wù)能承受多大的并發(fā), 可以根據(jù)需要設(shè)置線程數(shù)和間隔時間,不過這個數(shù)量如果特別大的話,并發(fā)量會不精準(zhǔn),但總體上還是可以達(dá)到我們的測試目的。

          b8c98fb528ce2a2462fc5a4e87fee8e6.webpimage.png fa30b7284fad5daf06e83f9f1f2d11da.webpimage.png
          • 最好設(shè)置一個定時器,控制發(fā)送的頻率。比如設(shè)置10毫秒一次,相當(dāng)于1個線程1秒發(fā)送100次數(shù)據(jù)
          d070758979534fdc04fda9b7e5d16390.webpimage.png

          注意超時時間,這里默認(rèn)的是10毫秒,如果MQTT服務(wù)不穩(wěn)定,可能會出現(xiàn)偶爾連不上的問題,建議1000毫秒

          88d28e29bbf74b714c78b510461bdb72.webpimage.png 63d496750ecba817e59f2abf4671cf51.webpimage.png f092e668ddc5873f2513eb756016fa29.webpimage.png
                
                public enum ServiceError {

              NORMAL(1, "操作成功"),
              UN_KNOW_ERROR(-1, "未知錯誤"),

              /** Global Error */
              GLOBAL_ERR_NO_SIGN_IN(-10001,"未登錄或登錄過期/Not sign in"),
              GLOBAL_ERR_NO_CODE(-10002,"code錯誤/error code"),
              GLOBAL_ERR_NO_AUTHORITY(-10003, "沒有操作權(quán)限/No operating rights"),
              ;

              private int code;
              private String msg;

              private ServiceError(int code, String msg)
              {
                  this.code=code;
                  this.msg=msg;
              }

              public int getCode() {
                  return code;
              }

              public String getMsg() {
                  return msg;
              }
          }

          springboot 啟動類

          jar啟動請忽略,war啟動請繼承 SpringBootServletInitializer

                
                import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          import org.springframework.boot.builder.SpringApplicationBuilder;
          import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

          @SpringBootApplication
          public class SecurityApplication extends SpringBootServletInitializer {

              public static void main(String[] args) {
                  SpringApplication.run(SecurityApplication.class, args);
              }

              // war啟動請實現(xiàn)該方法
              @Override
              protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
                  return builder.sources(SecurityApplication.class);
              }
          }
          44e01b64982d7a78ec5de800032b2e1c.webpimage.png be6e2e92fb0693070cfe12f10ac2bed9.webpimage.png 23c2410e2d90b933e050aa87db197096.webpimage.png 46002498df5afc90e5f717cc4cf7e6d3.webpimage.png 86a6a6e4426c702e082cc86d54e972c3.webpimage.png 44f98c132ec60366362606d935ea6a50.webpimage.png 9258289e574a8ba40d63811e4aa820d9.webpimage.png f4d2c1a4be016886e81aa7eb4cd93279.webpimage.png f270e48262d2b3cb26d8df18dc149a90.webpimage.png 0805ba88f51b5a4218e12a4fdb61aa30.webpimage.png 43ee448a9c31366af3985013d17abfe3.webpimage.png

          Docker Compose是一個用于定義和運(yùn)行多個Docker容器的工具。它允許您使用YAML文件來配置應(yīng)用程序的服務(wù)、網(wǎng)絡(luò)和卷,并使用單個命令啟動、停止和管理整個應(yīng)用程序。通過Docker Compose,您可以在一個命令中啟動包含多個容器的應(yīng)用程序,而無需手動運(yùn)行多個docker run命令。

          Docker Compose的核心概念包括:

          1. 服務(wù)(Services) :指應(yīng)用程序中的不同組件,每個服務(wù)通常對應(yīng)一個容器。
          2. 項目(Project) :指由一組關(guān)聯(lián)的服務(wù)組成的完整應(yīng)用程序。
          3. YAML文件:用于定義項目結(jié)構(gòu)、服務(wù)配置和依賴關(guān)系的文本文件,通常稱為docker-compose.yml。

          使用Docker Compose,您可以輕松地在開發(fā)、測試和生產(chǎn)環(huán)境中部署和管理復(fù)雜的容器化應(yīng)用程序。

          全局參數(shù)

          filter

          監(jiān)測數(shù)據(jù)項統(tǒng)一過濾,保留兩位小數(shù)。

                
                {{10.23123|montionFilter }}

          掃碼登錄流程講解、獲取授權(quán)登錄二維碼

          5f3caeb9ff491de3386f9dec1b7d2026.webpimage.png

          微信開放平臺的方式應(yīng)該是最舒服的微信掃碼登陸了,但是前提需要交認(rèn)證300元的認(rèn)證費(fèi)用,網(wǎng)站的話還需要提交《微信開放平臺網(wǎng)站信息登記表》,也是審核最麻煩的方式,只好先pass啦

          7e25bfe618a2fbd6a0c62d66d180136c.webp開發(fā)者認(rèn)證 0138c2ca0749267bcd6324841b247471.webp網(wǎng)站審核 11d820f4616ff94d6e791939c5232e3e.webpimage.png

          時序圖總結(jié)流程:

          1、用戶點擊網(wǎng)站微信登陸圖標(biāo)。

          2、網(wǎng)站帶上AppID和AppSecret和回調(diào)域名參數(shù)請求微信OAuth2.0授權(quán)登陸。

          3、第二步通過后,微信返回二維碼供用戶掃碼。

          4、用戶掃碼確定授權(quán)。

          5、微信帶上code參數(shù)回調(diào)java后端相關(guān)接口。

          6、java后端獲取到code后,在帶上帶上AppID和AppSecret和code再去調(diào)微信接口。

          7、獲取access_token后就可以解析用戶的一些基本信息,比如:微信用戶頭像、用戶名、性別、城市等一些基本參數(shù)。

          準(zhǔn)備工作

          網(wǎng)站應(yīng)用微信登錄是基于OAuth2.0協(xié)議標(biāo)準(zhǔn)構(gòu)建的微信OAuth2.0授權(quán)登錄系統(tǒng)。 在進(jìn)行微信OAuth2.0授權(quán)登錄接入之前,在微信開放平臺注冊開發(fā)者賬號,并擁有一個已審核通過的網(wǎng)站應(yīng)用,并獲得相應(yīng)的AppID和AppSecret,申請微信登錄且通過審核后,可開始接入流程。

          授權(quán)流程說明

          微信OAuth2.0授權(quán)登錄讓微信用戶使用微信身份安全登錄第三方應(yīng)用或網(wǎng)站,在微信用戶授權(quán)登錄已接入微信OAuth2.0的第三方應(yīng)用后,第三方可以獲取到用戶的接口調(diào)用憑證(access_token),通過access_token可以進(jìn)行微信開放平臺授權(quán)關(guān)系接口調(diào)用,從而可實現(xiàn)獲取微信用戶基本開放信息和幫助用戶實現(xiàn)基礎(chǔ)開放功能等。 微信OAuth2.0授權(quán)登錄目前支持authorization_code模式,適用于擁有server端的應(yīng)用授權(quán)。該模式整體流程為:

                
                1. 第三方發(fā)起微信授權(quán)登錄請求,微信用戶允許授權(quán)第三方應(yīng)用后,微信會拉起應(yīng)用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)臨時票據(jù)code參數(shù);
          2. 通過code參數(shù)加上AppID和AppSecret等,通過API換取access_token;
          3. 通過access_token進(jìn)行接口調(diào)用,獲取用戶基本數(shù)據(jù)資源或幫助用戶實現(xiàn)基本操作。

          第一步:請求CODE

          第三方使用網(wǎng)站應(yīng)用授權(quán)登錄前請注意已獲取相應(yīng)網(wǎng)頁授權(quán)作用域(scope=snsapi_login),則可以通過在PC端打開以下鏈接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“該鏈接無法訪問”,請檢查參數(shù)是否填寫錯誤,如redirect_uri的域名與審核時填寫的授權(quán)域名不一致或scope不為snsapi_login。

          2305d2853bc5157a8f81096e07ddc4cd.webpimage.png fb175cc26436bc8672e303382459e040.webpimage.png
                
                1. 若access_token已超時,那么進(jìn)行refresh_token會獲取一個新的access_token,新的超時時間;
          2. 若access_token未超時,那么進(jìn)行refresh_token不會改變access_token,但超時時間會刷新,相當(dāng)于續(xù)期access_token。

          請求方法

          獲取第一步的code后,請求以下鏈接進(jìn)行refresh_token:

                
                https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
                
                1、Appsecret 是應(yīng)用接口使用密鑰,泄漏后將可能導(dǎo)致應(yīng)用數(shù)據(jù)泄漏、應(yīng)用的用戶數(shù)據(jù)泄漏等高風(fēng)險后果;存儲在客戶端,極有可能被惡意竊取(如反編譯獲取Appsecret);
          2、access_token 為用戶授權(quán)第三方應(yīng)用發(fā)起接口調(diào)用的憑證(相當(dāng)于用戶登錄態(tài)),存儲在客戶端,可能出現(xiàn)惡意獲取access_token 后導(dǎo)致的用戶數(shù)據(jù)泄漏、用戶微信相關(guān)接口功能被惡意發(fā)起等行為;
          3、refresh_token 為用戶授權(quán)第三方應(yīng)用的長效憑證,僅用于刷新access_token,但泄漏后相當(dāng)于access_token 泄漏,風(fēng)險同上;
          4、如無特別業(yè)務(wù)需求,建議開發(fā)者自行管理業(yè)務(wù)登錄態(tài)并合理設(shè)置過期時間,減少用戶重新授權(quán)登錄次數(shù),優(yōu)化用戶體驗。

          建議將secret、用戶數(shù)據(jù)(如access_token)放在App云端服務(wù)器,由云端中轉(zhuǎn)接口調(diào)用請求。

          對于接口作用域(scope),能調(diào)用的接口有以下:

          授權(quán)作用域(scope) 接口 接口說明
          snsapi_base /sns/oauth2/access_token 通過code換取access_token、refresh_token和已授權(quán)scope
          snsapi_base /sns/oauth2/refresh_token 刷新或續(xù)期access_token使用
          snsapi_base /sns/auth 檢查access_token有效性
          snsapi_userinfo /sns/userinfo 獲取用戶個人信息
          1. 什么是授權(quán)臨時票據(jù)(code)? 答:第三方通過code進(jìn)行獲取access_token的時候需要用到,code的超時時間為10分鐘,一個code只能成功換取一次access_token即失效。code的臨時性和一次保障了微信授權(quán)登錄的安全性。第三方可通過使用https和state參數(shù),進(jìn)一步加強(qiáng)自身授權(quán)登錄的安全性。
          2. 什么是授權(quán)作用域(scope)? 答:授權(quán)作用域(scope)代表用戶授權(quán)給第三方的接口權(quán)限,第三方應(yīng)用需要向微信開放平臺申請使用相應(yīng)scope的權(quán)限后,使用文檔所述方式讓用戶進(jìn)行授權(quán),經(jīng)過用戶授權(quán),獲取到相應(yīng)access_token后方可對接口進(jìn)行調(diào)用。
          10e0e55d4ef9af71b6acf3d45870fe1f.webpimage.png 3f3d85a921188ac1efe6f2b78c40c3be.webpimage.png 7d0d65483ce012b6664da6d35c830885.webpimage.png
          1. 當(dāng)認(rèn)證完成之后,我們即可以創(chuàng)建網(wǎng)站應(yīng)用
          f00d09622b9cac3ae58805e2f5195853.webpSpring學(xué)習(xí)筆記(二十三)——實現(xiàn)網(wǎng)站微信掃碼登錄獲取微信用戶信息Demo-左眼會陪右眼哭の博客 f873f8de94da0f92d1914cfce12c6067.webpimage.png

          1、微信開放平臺介紹(申請里面的網(wǎng)站應(yīng)用需要企業(yè)資料) 微信開放平臺網(wǎng)站:https://open.weixin.qq.com/

          2、什么是appid、appsecret、授權(quán)碼code appid和appsecret是 資源所有者向申請人分配的一個id和秘鑰 code是授權(quán)憑證,A->B 發(fā)起授權(quán),想獲取授權(quán)用戶信息,那a必須攜帶授權(quán)碼,才可以向B獲取授權(quán)信息 (你要從我這里拿東西出去,就必須帶身份證)

          3、先仔細(xì)閱讀下微信開放平臺 官方給出的微信登錄開發(fā)指南: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

                
                #    1、掃碼支付文檔:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=2_2
          #    2、名稱理解
                  appid:公眾號唯一標(biāo)識
                  appsecret:公眾號的秘鑰
                  mch_id:商戶號,申請微信支付的時候分配的
                  key:支付交易過程生成簽名的秘鑰,設(shè)置路徑 
                      微信商戶平臺(pay.weixin.qq.com)-->賬戶中心-->賬戶設(shè)置-->API安全-->密鑰設(shè)置
          #    3、和微信支付交互方式
                  1、post方式提交
                  2、xml格式的協(xié)議
                  3、簽名算法MD5
                  4、交互業(yè)務(wù)規(guī)則 先判斷協(xié)議字段返回,再判斷業(yè)務(wù)返回,最后判斷交易狀態(tài)
                  5、接**易單位為 分
                  6、交易類型:JSAPI--公眾號支付、NATIVE--原生掃碼支付、APP--app支付

          微信支付業(yè)務(wù)流程說明:

          (1)商戶后臺系統(tǒng)根據(jù)用戶選購的商品生成訂單。

          (2)用戶確認(rèn)支付后調(diào)用微信支付【統(tǒng)一下單API】生成預(yù)支付交易;

          (3)微信支付系統(tǒng)收到請求后生成預(yù)支付交易單,并返回交易會話的二維碼鏈接code_url。

          (4)商戶后臺系統(tǒng)根據(jù)返回的code_url生成二維碼。

          (5)用戶打開微信“掃一掃”掃描二維碼,微信客戶端將掃碼內(nèi)容發(fā)送到微信支付系統(tǒng)。

          (6)微信支付系統(tǒng)收到客戶端請求,驗證鏈接有效性后發(fā)起用戶支付,要求用戶授權(quán)。

          (7)用戶在微信客戶端輸入密碼,確認(rèn)支付后,微信客戶端提交授權(quán)。

          (8)微信支付系統(tǒng)根據(jù)用戶授權(quán)完成支付交易。

          (9)微信支付系統(tǒng)完成支付交易后給微信客戶端返回交易結(jié)果,并將交易結(jié)果通過短信、微信消息提示用戶。微信客戶端展示支付交易結(jié)果頁面。

          (10)微信支付系統(tǒng)通過發(fā)送異步消息通知商戶后臺系統(tǒng)支付結(jié)果。商戶后臺系統(tǒng)需回復(fù)接收情況,通知微信后臺系統(tǒng)不再發(fā)送該單的支付通知。

          (11)未收到支付通知的情況,商戶后臺系統(tǒng)調(diào)用【查詢訂單API】。

          (12)商戶確認(rèn)訂單已支付后給用戶發(fā)貨。

          加群聯(lián)系作者vx:xiaoda0423

          倉庫地址:https://github.com/webVueBlog/JavaGuideInterview

          瀏覽 40
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩成人免费 | 99热这里都是精品 | 青青草在线精品视频 | 欧美精品一区二区三区主播视频 | 波多野结衣高清无码视频 |