一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 利用Spring Social輕松搞定微信授權登錄的方法示例

利用Spring Social輕松搞定微信授權登錄的方法示例

2021-06-22 13:01LarrySu Java教程

這篇文章主要介紹了利用Spring Social輕松搞定微信授權登錄的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

微信第三方登錄有兩種方式:掃碼登錄(微信開放平臺)和公眾號登錄(微信公眾平臺)

掃碼登錄可以用于pc等跨平臺應用,而公眾平臺必須在微信app內使用,且必須關注公眾號.

下面以公眾平臺為例,介紹如何基于spring social實現微信用戶授權并獲取到用戶信息.(微信開放平臺類似)

第一步:到微信公眾平臺后臺注冊應用并進行相關設置

微信公眾平臺后臺地址: https://mp.weixin.qq.com/

也可以先注冊一個測試號: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

用微信掃碼登錄后臺后可以看到如下頁面:

利用Spring Social輕松搞定微信授權登錄的方法示例

其中的"appid"和"appsecret"需要記錄下來,一會要用到.

滑到下方找到" 網頁授權獲取用戶基本信息 ",點擊" 修改 ",將自己測試服務器的域名或ip填上去:

利用Spring Social輕松搞定微信授權登錄的方法示例

修改頁面:

利用Spring Social輕松搞定微信授權登錄的方法示例

第二步:添加相關代碼

我們假設服務端是基于springboot。

1.增加spring-social-wechat依賴:

maven:

?
1
2
3
4
5
<dependency>
  <groupid>com.ikasoa</groupid>
  <artifactid>spring-social-wechat</artifactid>
  <version>1.3.1</version>
</dependency>

或者gradle:

?
1
compile 'com.ikasoa:spring-social-wechat:1.3.1'

2.增加配置項目

application.yml:

?
1
2
3
4
5
spring:
 social:
  wechatmp:
   app-id: [appid]
   app-secret: [appsecret]

或者application.properties:

?
1
2
spring.social.wechatmp.app-id=[appid]
spring.social.wechatmp.app-secret=[appsecret]

其中" appid "和" appsecret "可以從微信公眾平臺后臺得到.

3.修改application.java

增加注解@enablesocial,并引用自動配置類(wechatmpautoconfiguration.class):

application.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.context.annotation.import;
import org.springframework.social.config.annotation.enablesocial;
import org.springframework.social.wechat.autoconfigurer.wechatmpautoconfiguration;
 
@springbootapplication
@enablesocial
@import(wechatmpautoconfiguration.class)
public class application {
 
  public static void main(string[] args) throws exception {
    springapplication.run(application.class, args);
  }
 
}

4.增加signinadapter并注冊providersignincontroller

signinadapter用來處理微信授權成功后的相關操作,例如:

wechatsigninadapter.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import org.springframework.social.connect.connection;
import org.springframework.social.connect.connectionkey;
import org.springframework.social.connect.web.signinadapter;
import org.springframework.social.wechat.api.user;
import org.springframework.social.wechat.api.wechat;
import org.springframework.stereotype.component;
import org.springframework.web.context.request.nativewebrequest;
 
@component
public class wechatsigninadapter implements signinadapter {
 
  @override
  public string signin(string openid, connection<?> connection, nativewebrequest request) {
    connectionkey key = connection.getkey();
    // 通過providerid判斷是否為微信公眾平臺授權
    if ("wechatmp".equalsignorecase(key.getproviderid())) {
      // 通過微信openid獲取到用戶詳細信息
      user user = ((wechat)connection.getapi()).useroperations().getuserprofile(openid);
      // 微信用戶詳細信息,可以記錄到數據庫.這里直接打印到后臺
      system.out.println(user);
      return “/success.htm”; // 返回登錄成功后跳轉的url
    }
    return “/error.htm”;
  }
 
}

將wechatsigninadapter注入到providersignincontroller中:

?
1
2
3
4
5
6
7
......
@bean
public providersignincontroller providersignincontroller(connectionfactorylocator connectionfactorylocator, usersconnectionrepository usersconnectionrepository, wechatsigninadapter wechatsigninadapter) {
  ((inmemoryusersconnectionrepository) usersconnectionrepository).setconnectionsignup((connection<?> connection) -> connection.getkey().getprovideruserid());
  return new providersignincontroller(connectionfactorylocator, usersconnectionrepository, wechatsigninadapter);
}
......

其中inmemoryusersconnectionrepository是基于內存存儲用戶信息的實現(usersconnectionrepository),也是默認的實現.此外springsocial還提供了jdbc的實現可選.

第三步:啟動并測試

在測試頁面里添加一個微信授權入口:

?
1
2
3
4
5
......
<form action="/signin/wechatmp" method="post">
  <button type="submit">微信授權登錄</button>
</form>
......

啟動springboot,在微信app中打開測試頁面點擊測試button.

測試頁面的域名必須與公眾平臺后臺" 網頁授權獲取用戶基本信息 "中設置的域名相同.

如果一切順利,服務端后臺就會打印該微信用戶的詳細信息:

利用Spring Social輕松搞定微信授權登錄的方法示例

頁面會跳轉到"/success.htm",也就是在wechatsigninadapter.signin中返回的地址.

注意,測試賬號需要先關注微信測試公眾號(測試號后臺掃二維碼可以關注),否則會報錯"errorcode:10006".

微信登錄實現已全部完成.

關于 微信開放平臺登錄 (掃碼登錄)與此類似,需要在 微信開放平臺 后臺申請"appid"和"appsecret",并將上面例子中的" wechatmp "改為" wechat "即可.

完整的例子代碼:

spring-social-wechat-sample

關于Spring Social項目

spring-social

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://my.oschina.net/venwyhk/blog/2987727

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97影院伦理| 亚洲国产在线99视频 | 国产精品乱码高清在线观看 | 韩日理论片 | 奇米成人 | 日本黄a| 亚洲国产99在线精品一区69堂 | 人妇小说 | 天美麻豆 | 小辣椒精品福利视频导航 | 深夜视频在线播放 | 沉沦艳妇杨幂肉体小说 | 天选之王漫画顾长歌免费阅读 | 我和寂寞孕妇的性事 | 2020韩国三级理论在线观看 | 毛片在线网址 | 美女大鸡鸡 | 日韩精品久久不卡中文字幕 | 美女用屁股把人吞进肚子 | 无码天堂亚洲国产AV久久 | 四大美女思春艳史片 | 久久国产36精品色熟妇 | 欧美乱子伦xxxx12在线 | 亚洲国产精品久久网午夜 | 免费午夜影片在线观看影院 | 国产精品高清视亚洲一区二区 | 青青草亚洲 | 亚洲成人在线播放 | 亚洲国产成人超福利久久精品 | 好男人好资源在线观看免费 | 成年男女免费大片在线观看 | 青青草原免费在线视频 | 欧美最猛性xxxxx男男 | 国产91精品久久久久久 | 天天综合色天天综合 | 草逼视频网址 | 成年人免费看的视频 | 国产成人永久免费视 | 免费一级特黄特色大片在线 | 91se精品免费观看 | 国产综合久久久久久 |