<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
隨著技術的發展,微信的一系列服務滲透進了我們的生活,但是我們應該怎樣進行微信方面的開發呢。相信很多的小夥伴們都很渴望知道吧。這篇文章就是來解決大家的一些疑惑的。首先我們要進行相關的開發的話,那麼我們需要先獲取微信的openid
。那麼我們英愛怎樣獲取呢?這裡我會介紹兩種方式。
(1).註冊對應的公眾號找到下圖位置
(2). 在natapp.cn上購買自己的用於微信開發的域名
哈哈,這個網站上面的域名也不是特別的貴呀,我在這上面買的一個域名為期一個月的話也就才12
元,且改型別的屬於二級域名,是已經備過案的,所以也就不需要備案。
(3). 下載對應的使用者端進行啟動
在windows
上啟動的命令
natapp -authtoken 你的authtoken
啟動後
可見我的域名指向了127.0.0.1:8080
。
(4).將我們的域名填到公眾號中JS介面安全域名提交
提交之前我們需要將上圖中的紅色框框住的部分的檔案下載下來放置專案的
static
目錄下,測試存取通過之後,然後才能進行提交。
可謂是一波三折呀,我本來以為我這個專案就要gg
了。但也是我自己太小兒科了。微信怎麼可能沒有想到這麼一個問題呢。就是微信公眾號的 網頁授權獲取使用者基本資訊 功能服務。它這個功能服務必須只有 服務號 才擁有,但是其實每個使用者可以免註冊獲得一個測試號,該測試號就含有這個特殊功能服務。
(1).登入自己的測試號
微信測試號是免註冊的,我們直接掃碼登入即可。
(2).編寫對應的介面
import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @author :小肖 * @date :Created in 2022/2/1 21:55 */ @RestController @RequestMapping("/weixin") @Slf4j public class WeixinController { @GetMapping("/auth") public void auth(@RequestParam("code") String code){ log.info("進入了auth方法..."); log.info("code = {}",code); } }
(3).在登入測試號之後進行網頁授權
授權的域名就是我們在
natapp.cn
上購買的域名,如果沒有進行授權的話那麼就會報出10003 redirect_uri域名與後臺設定不一致
錯誤。
(4).進行存取url進行測試
https://open.weixin.qq.com/connect/oauth2/authorize?appid=測試號的appid&redirect_uri=http://你的域名/sell/weixin/auth&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
注意點
被測試的物件必須先關注對應的測試號且必須在微信使用者端進行存取。
(5).測試結果
成功獲取了使用者的code
資訊。
(1).編寫的controller
import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; /** * @author :小肖 * @date :Created in 2022/2/1 21:55 */ @RestController @RequestMapping("/weixin") @Slf4j public class WeixinController { @GetMapping("/auth") public void auth(@RequestParam("code") String code){ log.info("進入了auth方法..."); log.info("code = {}",code); String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=appsecret&code=" + code + "&grant_type=authorization_code"; RestTemplate restTemplate = new RestTemplate(); String response = restTemplate.getForObject(url, String.class); } }
(2).存取的url組成
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
引數 | 是否必須 | 說明 |
---|---|---|
appid | 是 | 公眾號的唯一標識 |
secret | 是 | 公眾號的appsecret |
code | 是 | 填寫第一步獲取的code引數 |
grant_type | 是 | 填寫為authorization_code |
(3).存取的結果
{ "access_token": "53_HK355v2MhOolNlGkaoUf4oDCkyX0WDollvsQNU5SvhsvmvF2S2VoqdPXuokfERI2oqFvQijVShq8aQzeQ9n01mGKSJn7q5rLAcYbTjm1H7k", "expires_in": 7200, "refresh_token": "53_C1us_G770mgzXjd-PuK329qB65lXiK483_qxUXjKudwWIdHkOz5ntwlByEgUQfMEy_-7tCCzcO4DoHaFbY0JurpZYD3Bys6DLs8ua8J_CjU", "openid": "你的openid", "scope": "snsapi_base" }
<!--微信公眾號開發需要引入的依賴--> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <version>3.1.0</version> </dependency>
wechat: mpAppId: 你的微信測試號appId mpAppSecret: 你的微信測試號secret
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @author :小肖 * @date :Created in 2022/2/2 10:31 */ @Component @Data @ConfigurationProperties(prefix = "wechat") public class WechatAccountConfig { /** * 公眾號id */ private String mpAppId; /** * 公眾號金鑰 */ private String mpAppSecret; }
import me.chanjar.weixin.mp.api.WxMpConfigStorage; import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; /** * @author :小肖 * @date :Created in 2022/2/2 10:24 */ @Component public class WechatMpConfig { @Autowired private WechatAccountConfig wechatAccountConfig; @Autowired private WxMpInMemoryConfigStorage wxMpInMemoryConfigStorage; @Bean public WxMpService wxMpService(){ WxMpService wxMpService = new WxMpServiceImpl(); wxMpService.setWxMpConfigStorage(wxMpInMemoryConfigStorage); return wxMpService; } @Bean public WxMpInMemoryConfigStorage wxMpConfigStorage(){ /** * 這裡需要注意的是 由於父類別中沒有定義對應的介面 * 所以所有的方法都在其實現類中,所以我們要構造實現類 */ WxMpInMemoryConfigStorage wxMpConfigStorage = new WxMpInMemoryConfigStorage(); wxMpConfigStorage.setAppId(wechatAccountConfig.getMpAppId()); wxMpConfigStorage.setSecret(wechatAccountConfig.getMpAppSecret()); return wxMpConfigStorage; } }
import com.xiao.enums.ResultEnum; import com.xiao.exception.SellException; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @author :小肖 * @date :Created in 2022/2/2 10:20 */ @Controller @RequestMapping("/wechat") @Slf4j public class WechatController { @Autowired private WxMpService wxMpService; @GetMapping("/authorize") public String authorize(@RequestParam("returnUrl") String returnUrl){ String url = "http://xiao-sell.natapp1.cc/sell/wechat/userInfo"; String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO,returnUrl); return "redirect:" + redirectUrl; } @GetMapping("/userInfo") public String userInfo(@RequestParam("code") String code, @RequestParam("state") String returnUrl) { WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken(); try{ wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code); }catch (WxErrorException e){ log.error("【微信網頁授權錯誤】 exception = {}",e); throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg()); } String openId = wxMpOAuth2AccessToken.getOpenId(); log.info("openid = {}",openId); return "redirect:" + returnUrl + "?openid=" + openId; } }
第一個斷點
該重定向的url
很明顯就是我們手工方式中獲取code
的url
。
第二個斷點
成功獲取了code
和openid
。
到此這篇關於手把手教你如何獲取微信使用者openid的文章就介紹到這了,更多相關獲取微信使用者openid內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45