微信开放平台扫码登录[通俗易懂]

微信开放平台扫码登录[通俗易懂]微信开放平台扫码登录的功能只有已经认证过的微信公众号才可以使用,很多学习微信的同学可能没办法使用这个功能,但是别担心,以下网址中有很多账号可以使用:【想要获取更多公众账号可以关注微信公众号:小D课堂】https://mp.weixin.qq.com/s?__biz=MzUyMDg1MDE2MA%3D%3D&idx=2&mid=2247483689&sn=5…

大家好,又见面了,我是你们的朋友全栈君。

       微信开放平台扫码登录的功能只有已经认证过的微信公众号才可以使用,很多学习微信的同学可能没办法使用这个功能,但是别担心,以下网址中有很多账号可以使用:【想要获取更多公众账号可以关注微信公众号:小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")
@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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130289.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java大数据学习路线图

    Java大数据学习路线图Java大数据学习路线图准备篇适用/适合人群:适合基础小白在这里还是要推荐下我自己建的大数据学习群:199427210,群里都是学大数据开发的,如果你正在学习大数据,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴加入。目标:掌握JavaS…

  • 根据/proc/partitions获取插入的U盘设备名称

    根据/proc/partitions获取插入的U盘设备名称1 在/proc/partitions中存放着U盘的设备名称,如sda,sdb2等,以sd开头。major主设备号,比如一个U盘有3个分区,主设备名为sda,major为8,分区的major也为8,minor则为分区号,sda1,sda2,minor值为1,2sda的minor为0,name即为设备名,连接/dev./设备名,就可以挂载到一个目录。blocks表示物理设备逻辑块

  • C#使用#ziplib压缩和解压缩文件

    C#使用#ziplib压缩和解压缩文件要下载整个目录,一般方法是一个个文件下载或ftp工具现在用SharpZipLib就能实现实时zip压缩下载整个目录SharpZipLib提供了多种压缩算法的支持,纯csharp代码,参见http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp原理是通过递归方法将每个文件压缩到ZipOutputStream,然

  • docker(10)上传本地镜像到镜像仓库[通俗易懂]

    docker(10)上传本地镜像到镜像仓库[通俗易懂]前言之前通过docker搭建过jenkins+python3环境,如果想要在不同的机器上搭建一样的环境,就可以将之前搭建的镜像上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境。如果公开的话

  • Idea使用git切换远程分支[通俗易懂]

    描述公司开发人数越来越多,项目业务逻辑越来越复杂,就有了越来越多的分支,各个小伙伴在各自的分支上进行开发,然后进行合并,如果本大爷需要切换到别的开发分支上,那如何实现呢?解决方案屁话不多说,直接上图 点击鼠标右键,选择GIT–>Repository–>Pull… Branchestomerge:选择你需要的分支,如果你没遇到你想要的分支就点击刷新一下。…

  • MySQL索引原理以及查询优化「建议收藏」

    一、介绍1.什么是索引?一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号