微信開放平台掃碼登錄


微信開放平台掃碼登錄

知更鳥女孩 2019-03-13 14:34:16 2251 收藏 2
分類專欄: 微信
版權
       微信開放平台掃碼登錄的功能只有已經認證過的微信公眾號才可以使用,很多學習微信的同學可能沒辦法使用這個功能,但是別擔心,以下網址中有很多賬號可以使用:【想要獲取更多公眾賬號可以關注微信公眾號:小D課堂】

https://mp.weixin.qq.com/s?__biz=MzUyMDg1MDE2MA%3D%3D&idx=2&mid=2247483689&sn=55ecd5f4d00dd6de029756902459fd2b

 

應用一:

應用名稱:漫道

AppID:wx2a6cf9373f278ed2

Appsecret:b32af04d9062ebc44b3f5d8b87a5a48e

回調域名配置:testxdclass.tunnel.qydev.com

應用二:

應用名稱:狼途

AppID:wx025575eac69a2d5b

Appsecret:72024309d9751d33e97e9d2a66e89944

回調域名配置:test16web.tunnel.qydev.com

   首先一個問題就是項目的域名和微信授權域名不一致,沒辦法把自己的域名設置到,比如我的項目域名為  t238997p11.qicp.vip ,那么希望的是,當訪問微信后台授權的域名時,能自動跳轉到我自己的域名,這樣就能運行后台代碼。

----------------------------------------------------------------------------------------------------------------------- 

以我自己使用的賬號為例:

openAppId: wx277996c4d2772104 #開放平台appid
openAppSecret: xxxxxxxxxxxxxxxxxxxxxxxxxxx #開發平台appSecret
wechatOpenAuthorize: testdev.tunnel.qydev.com #回調域名
一、第一步:安裝nginx進行代理

1、下載安裝nginx :官方網址:http://nginx.org/en/download.html

      點擊進入官網,下載穩定版

 

 

 

解壓后點擊nginx.exe,打開任務管理器,看到如下圖說明nginx已開啟

 

 

 

 

2、利用nginx進行代理,使得當訪問 testdev.tunnel.qydev.com 這個授權域名的時候,能夠訪問到我自己的后台代碼。

即,當訪問 http://testdev.tunnel.qydev.com 【80端口省略不寫】時等價於訪問127.0.0.1:8080

(1)配置nginx.conf

注意:A:proxy_pass  代理的是upstream中的內容,並且upstream后面的名稱一定要與proxy_pass  后面的一致

           B:監聽的端口號一定是80,如果80端口已被占用一定要先解除占用

          C:server_name  是微信的已授權域名

 upstream sell
    {
        server 127.0.0.1:8080;
    }

    server {
        listen       80;
        server_name  testdev.tunnel.qydev.com;

        location / {
             proxy_pass  http://sell;
        }

}

(2)修改hosts文件(在C:\Windows\System32\drivers\etc目錄下)

添加:127.0.0.1  testdev.tunnel.qydev.com

二、SpringBoot后台代碼

@Controller
@RequestMapping("/wechat")a
@Slf4j
public class WechatController {

@Autowired
private WxMpService wxOpenService;

/**
* 微信開放平台授權登錄
*
* @param returnUrl
* @return
*/
//訪問:http://127.0.0.1:8080/sell/wechat/qrAuthorize?returnUrl=http://www.imooc.com
@GetMapping("/qrAuthorize")
public String qrAuthorize(@RequestParam("returnUrl") String returnUrl){
String url = "http://testdev.tunnel.qydev.com/sell/wechat/qrUserInfo";
String redirectUrl = wxOpenService.buildQrConnectUrl(url,WxConsts.QrConnectScope.SNSAPI_LOGIN, URLEncoder.encode(returnUrl));
log.info("微信開放平台授權獲取code,redirectUrl={}",redirectUrl);
return "redirect:" + redirectUrl;
}

/**
* 微信開放平台掃碼獲取openid
*
* @param code
* @param returnUrl
* @return
*/
@GetMapping("/qrUserInfo")
public String qrUserInfo(@RequestParam("code") String code,
@RequestParam("state") String returnUrl){
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
try {
wxMpOAuth2AccessToken = wxOpenService.oauth2getAccessToken(code);
} catch (WxErrorException e) {
log.info("[微信網頁授權] {}",e);
throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());
}
//獲取openid
String openId = wxMpOAuth2AccessToken.getOpenId();

return "redirect:" + returnUrl+"?openid=" + openId;
}
}
三、結果

訪問:  http://127.0.0.1:8080/sell/wechat/qrAuthorize?returnUrl=http://www.imooc.com

出現如下圖所示,地址欄變為:https://open.weixin.qq.com/connect/qrconnect?appid=wx277996c4d2772104&redirect_uri=http%3A%2F%2Ftestdev.tunnel.qydev.com%2Fsell%2Fwechat%2FqrUserInfo&response_type=code&scope=snsapi_login&state=http%3A%2F%2Fwww.imooc.com#wechat_redirect

 

 

 

微信掃碼后跳轉到returnUrl后的回調地址 http://www.imooc.com,並返回openid

地址欄變為 https://www.imooc.com/?openid=XXXXXJGsKKpEqGMEt7V7XXXXXX

 

 

 

按照上述步驟微信掃碼登錄就實現了!!如果還有什么問題歡迎指教!!

微信開放平台參考手冊:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN
————————————————
版權聲明:本文為CSDN博主「知更鳥女孩」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38151401/java/article/details/88530967


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM