第三方应用实现微信登录

第一步
首先你要去到微信开放平台申为你的应用申请一个oppenID和秘钥。微信开放平台

第二步
查看微信登录的一个流程
微信登录流程
1.第三方发起微信授权登录请求后,微信用户允许授权第三方应用后,微信会拉起应用或者重定向到第三方网站,并且带上临时授权票据code参数。
2. 通过 code 参数加上 AppID 和 AppSecret 等,通过 API 换取 access_token;
3. 通过 access_token 进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
详情请看微信文档:微信登录开发文档

第三步:代码实现
首先你要引入alibaba的FastJson和Http的client,可以去Maven仓库下载

<!-- httpClient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.8</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>

显示出二维码给用户扫码
1.`可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数

2.内嵌式`:var obj = new WxLogin({
            id: "wxLogin",
            appid: "你申请到的appid",
            scope: "snsapi_login",
            redirect_uri: "你的回调地址,记得加上http://",
            href:"你的样式"

因为内嵌式中微信开发文档中需要引入很多东西,我们只需要引用一下就可以

引入wxlogin.js
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

在href中写上

            href: "data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30NCi5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9DQouaW1wb3dlckJveCAuaW5mbyB7d2lkdGg6IDIwMHB4O30NCi5zdGF0dXNfaWNvbiB7ZGlzcGxheTogbm9uZX0NCi5pbXBvd2VyQm94IC5zdGF0dXMge3RleHQtYWxpZ246IGNlbnRlcjt9"

内嵌式就可以使用了。
这里小编踩进了一个巨大的坑,就是你appid、回调域都填写对了,它还是显示如下界面:坑
1.你可以在hosts文件下配置你的授权回调名
hosts文件
2.将你的Tomcat断开改为80默认端口,然后你可以看下图,具体原因小编还在寻找当中在这里插入图片描述
后面的你可以参照微信开发文档一步步操作了。然后还有一个解析微信url的一个方法。

 private JSONObject getInfo(String url) {

        try {
            CloseableHttpClient client = HttpClients.createDefault();

            HttpGet httpGet = new HttpGet(url);

            HttpResponse response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();

            if (entity != null) {
                String result = EntityUtils.toString(entity, Charset.forName("UTF8"));

                return JSONObject.parseObject(result);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


        return null;
    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值