微信登录/第三方登录


微信登录官网: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

1、二维码

  • 点击微信登录,弹出微信登录的二维码
/*
	APPID:应用唯一标识(公司申请微信登录成功后都有一个appid)
	REDIRECT_URI:请使用urlEncode对链接进行处理(一般项目上线后都有一个域名(如:www.某度.com),这里就填写需要访问项目的域名:注意该域名对应的项目端口必须是80端口)
	
	注意:域名后面也可以跟需要跳转的路径,如:http://www.某度.com/callback.html 
*/
//访问该路径,弹出二维码
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_login&state=1#wechat_redirect"

样:
在这里插入图片描述

2、授权成功

  • 用户点击同意微信登录后可以从访问路径里面获取到code
通过code,传到后台能获取到openid和令牌access_token等)
    openid:每个微信用户的唯一标识,可以拿它到数据库中查询来判断他以前是否登录过
    access_token:令牌,可以通过他和openid获取到微信登录用户的信息

  • 注:我这里是跳转的前端页面所以是根据href获取的
//打印出来结果:http://域名:80端口的/callback.html?code=aaaaaaaaaaa&state=1
 let url = location.href;

  • 截取路径里面的code值,拿它获取openid
//1、发送get请求到微信平台,拿到Openid
//注意:替换字符串里面括号内的内容(包含括号)
//这个地址是微信官方给的
String url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=(自己公司的APPID)&secret=(密文:公司注册成功后也有)&code=(这里填扫码传来的CODE)&grant_type=authorization_code";

//2、使用工具类发送get请求(工具类这本篇文章的最后),发送成功后得到的就是openid和access_token
String httpGet = HttpClientUtils.httpGet(url);

//最后httpGet 结果就是这样:我们只要openid和access_token
//注意这只是json字符串,要获取里面的内容需要转成json对象
{"access_token":"bbb","expires_in":aaa,"refresh_token":"ccc","openid":"ddd"}



//3、然后我们根据这个openid到数据库中去查询(这里有个微信登录用户类),判断他以前是否已经用微信登录过了

........ 查询代码略过

如果以前已经登录过了(系统记录了微信登录信息了),那么就直接在这结束逻辑,并且跳转到登录过后的界面

.....................


//4、如果他是第一次用微信登录,那么根据openid和access_token也是发送一个get请求。拿到到微信用户点击授权后,微信官网给你的信息
//替换括号的内容(包括括号):这个地址和上面的是不一样的,都是微信官方给的
String urlUser ="https://api.weixin.qq.com/sns/userinfo?access_token=(上面使用code获取到他给你的ACCESS_TOKEN)&openid=(上面使用code获取到他给你的OPENID)";

String WxLogin = HttpClientUtils.httpGet(urlUser);

/ *
	这坨是json字符串,也是需要转json对象
 	
 	最终拿到的字符串结果:(选取我们需要的保存即可,注意:一定要保存openid)
		{
		"openid":"OPENID", //微信用户的唯一标识
		"nickname":"NICKNAME", //微信用户的昵称
		"sex":1, //性别
		"province":"PROVINCE",
		"city":"CITY",
		"country":"COUNTRY",
		"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
		"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
		}
*/


//5、到这基本上也就结束了,后面的逻辑不过就是像一个普通的user用户一样保存上面的一坨微信用户信息。然后跳转到登录过后的界面即可
	.........

3、题外

//这个是写给本人看的

//如果需要跳转到前台另一个页面在跳转到后台的话,就需要这样,路径直接写死
//这样避免了重新跳转页面,openid和access_token拿不到的问题,(直接将这两个数据传发到路径里传到前台,到时候在获取到路径里面的openid然后在传回来)
String bindUrl ="http://域名/bindle.html?access_token="+access_token+"&openid="+openid+"";

4、本篇用到的发送get请求的工具类

  • 直接拷贝使用即可
/**
 * 使用httpclient组件发送http请求
 *   get:现在只用到get
 *   post
 */
public class HttpClientUtils {
    /**
     * 发送get请求
     * @param url 请求地址
     * @return 返回内容 json
     */
    public static String httpGet(String url){

        // 1 创建发起请求客户端
        try {
            HttpClient client = new HttpClient();
            // 2 创建要发起请求-tet
            GetMethod getMethod = new GetMethod(url);
            getMethod.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
            // 3 通过客户端传入请求就可以发起请求,获取响应对象
            client.executeMethod(getMethod);
            // 4 提取响应json字符串返回
            String result = new String(getMethod.getResponseBodyAsString().getBytes("utf8"));
            return result;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值