最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年12月14日 09:34:39   作者:LarrySu  
這篇文章主要介紹了利用Spring Social輕松搞定微信授權登錄的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

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

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

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

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

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

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

修改頁面:

第二步:添加相關代碼

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

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

Maven:

<dependency>
  <groupId>com.ikasoa</groupId>
  <artifactId>spring-social-wechat</artifactId>
  <version>1.3.1</version>
</dependency>

或者Gradle:

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

2.增加配置項目

application.yml:

spring:
 social:
  wechatmp:
   app-id: [appID]
   app-secret: [appsecret]

或者application.properties:

spring.social.wechatmp.app-id=[appID]
spring.social.wechatmp.app-secret=[appsecret]

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

3.修改Application.java

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

Application.java

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

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);
      // 微信用戶詳細信息,可以記錄到數(shù)據(jù)庫.這里直接打印到后臺
      System.out.println(user);
      return “/success.htm”; // 返回登錄成功后跳轉的url
    }
    return “/error.htm”;
  }

}

將WechatSignInAdapter注入到ProviderSignInController中:

......
@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是基于內存存儲用戶信息的實現(xiàn)(UsersConnectionRepository),也是默認的實現(xiàn).此外SpringSocial還提供了JDBC的實現(xiàn)可選.

第三步:啟動并測試

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

......
<form action="/signin/wechatmp" method="POST">
  <button type="submit">微信授權登錄</button>
</form>
......

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

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

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

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

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

微信登錄實現(xiàn)已全部完成.

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

完整的例子代碼:

spring-social-wechat-sample

關于Spring Social項目

spring-social

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

相關文章

  • java中實現(xiàn)自定義注解方式

    java中實現(xiàn)自定義注解方式

    注解是Java中的一種元數(shù)據(jù),可以修飾方法、類、參數(shù)和包等,自定義注解需要public修飾符、@interface關鍵字,以及注解名稱和類型元素,元注解如@Target、@Retention等用于修飾注解,指定注解的適用范圍和生命周期,自定義注解的使用涉及到通過反射解析注解
    2024-11-11
  • Java中的?stop?the?world是什么呢

    Java中的?stop?the?world是什么呢

    這篇文章主要介紹了Java中的stop?the?world是什么呢,從字面上講,就是停止這個世界,看到這個字眼,就覺得這是可怕的事情,那到底什么是stop-the-world,本文給大家詳細講解,感興趣的朋友跟隨小編一起看看吧
    2023-05-05
  • Springboot+Redis執(zhí)行l(wèi)ua腳本的項目實踐

    Springboot+Redis執(zhí)行l(wèi)ua腳本的項目實踐

    本文主要介紹了Springboot+Redis執(zhí)行l(wèi)ua腳本的項目實踐,詳細的介紹Redis與Lua腳本的結合應用,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 幾種常見mybatis分頁的實現(xiàn)方式

    幾種常見mybatis分頁的實現(xiàn)方式

    這篇文章主要介紹了幾種常見mybatis分頁的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java BigDecimal詳解_動力節(jié)點Java學院整理

    Java BigDecimal詳解_動力節(jié)點Java學院整理

    BigDecimal 由任意精度的整數(shù)非標度值 和32 位的整數(shù)標度 (scale) 組成。接下來通過本文給大家介紹Java BigDecimal詳解,需要的的朋友參考下吧
    2017-04-04
  • AbstractProcessor擴展MapStruct自動生成實體映射工具類

    AbstractProcessor擴展MapStruct自動生成實體映射工具類

    這篇文章主要為大家介紹了AbstractProcessor擴展MapStruct自動生成實體映射工具類實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 詳解Java基礎篇--面向對象1(構造方法,static、this關鍵字)

    詳解Java基礎篇--面向對象1(構造方法,static、this關鍵字)

    這篇文章主要介紹了Java基礎篇--面向對象1(構造方法,static、this關鍵字),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 解決MybatisPlus批量插入數(shù)據(jù)報錯:Error getting generated key or setting result to parameter object問題

    解決MybatisPlus批量插入數(shù)據(jù)報錯:Error getting generated 

    在使用MybatisPlus進行批量插入數(shù)據(jù)時遇到空指針異常錯誤,分析原因是由于主鍵生成策略導致的,嘗試通過設置useGeneratedKeys屬性解決問題,但因批量插入方法限制,該方法未能成功,最終通過自定義mapper方法實現(xiàn)批量插入,解決了問題
    2024-09-09
  • 使用SpringSecurity設置角色和權限的注意點

    使用SpringSecurity設置角色和權限的注意點

    這篇文章主要介紹了使用SpringSecurity設置角色和權限的注意點,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot使用Validation包進行輸入?yún)?shù)校驗

    SpringBoot使用Validation包進行輸入?yún)?shù)校驗

    Spring Boot 自帶的 spring-boot-starter-validation 包支持以標準注解的方式進行輸入?yún)?shù)校驗,本文即關注 spring-boot-starter-validation 包所涵蓋的標準注解的使用、校驗異常的捕獲與展示、分組校驗功能的使用,以及自定義校驗器的使用,需要的朋友可以參考下
    2024-05-05

最新評論

烟台市| 新和县| 桐柏县| 通榆县| 辽中县| 富平县| 雅江县| 陈巴尔虎旗| 通渭县| 嘉峪关市| 海淀区| 宜昌市| 诸暨市| 永福县| 鲁山县| 德化县| 新郑市| 肇源县| 潢川县| 九龙城区| 浦县| 安多县| 苗栗县| 台前县| 隆子县| 水富县| 富平县| 那坡县| 黎川县| 安平县| 新密市| 舟山市| 瓦房店市| 偃师市| 石台县| 大田县| 北川| 北票市| 安顺市| 扶风县| 武功县|