微信统一登录

目录

一.wx.getUserProfile获取用户信息

二.wx.login获取code

三.根据code获得微信用户的唯一标识符openId

四.完整流程


一.wx.getUserProfile获取用户信息

微信库版本>2.27.1时,getUserProfile不再返回真实用户信息了并且也不再弹出授权框

详见官方文档:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01icon-default.png?t=N7T8https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01

uniapp使用hxbuild时如何调整微信库版本: 

微信库版本<2.27.1时,获取信息成功返回的数据

 wx.getUserProfile({
        //必填项
		desc: '获取你的昵称、头像、地区及性别',
        //执行成功后调用的接口
		success(res){
			console.log(res)
	    },
        //执行失败后调用的接口
        fail(res){
			console.log('error',res)
		},
        //无论执行失败,成功都会调用的接口
        complete(res){
			console.log('error',res)
		}
  })

二.wx.login获取code

wx.login是微信提供的微信登录接口,会返回一个临时的code值,之后根据这个临时code值获取微信用户唯一的openid和session_key值

wx.login接口正常返回数据:

wx.login({
	 success(res){
		console.log(res)
		if(res.code){
			console.log('code',res.code)
		}
	 }
 })

三.根据code获得微信用户的唯一标识符openId

由于后期小程序上传代码时前端不能出现appid,secret,建议获取openId部分放在后端接口

后端代码:

@RequestMapping(value = "/getOpenId", method = RequestMethod.POST)
 public String wx(String code) throws IOException {
        String url = "https://api.weixin.qq.com/sns/jscode2session?";
        Map<String,Object> requestMap=new HashMap<>();
        requestMap.put("appid",APP_ID);
        requestMap.put("secret",APP_SECRECT);
        requestMap.put("js_code",code);
        requestMap.put("grant_type","authorization_code");
        String result= HttpUtil.get(url,requestMap);
        return result;
    }

前端代码:

//自己封装了request请求
export function  getOppenId(code) {  
  return request({  
    url: `/wx/getOpenId?code=`+code, // 后端接口地址
	method: 'Post'  ,
  });  
} 

返回数据:

四.完整流程

<Script>
    import {getOppenId}  from '../xxxx.js'
    export default {
        methods:{
             wxlogin(){
                 //调用微信接口获取微信用户信息(微信库2.27版本以下才行)
                 wx.getUserProfile({
                     //必填项
		             desc: '获取你的昵称、头像、地区及性别',
                     //执行成功后调用的接口
		             success(res){
                         //调取微信接口获取临时code
                         wx.login({
	                         success(res){
                                 //如果成功获得,code存在
	                        	 if(res.code){
                                      //调用后端接口根据code返回微信的openId
                                      getOppenId(res.code).then(res=>{
                                          /**
                                            写自己的登录逻辑
                                            比如:
                                              如果数据库存在该openId:
                                                 用户存在->跳转到小程序首页
                                              如果数据库不存在该openId:
                                                 新增用户->跳转到小程序首页
                                           */
                                      }).catch(error=>{
								         console.log('错误信息',error)
							          })
	                        	 }
	                         }
                         })
	                 },
                     //执行失败后调用的接口
                     fail(res){
		             	console.log('error',res)
		             
                     //无论执行失败,成功都会调用的接口
                     complete(res){
		             	console.log('error',res)
		             }
                })
             }
        }
    }
</Script>

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JustAuth可以通过集成公共组件来实现微信小程序的授权登录微信小程序授权登录是一种特殊的第三方授权登录,它遵循OAuth2.0协议的授权登录流程,但在对接的流程中有一些不同之处。通常的第三方授权登录过程中,获取token的state和code是在回调客户端url中获取的,而微信小程序授权登录获取token的state和code是使用微信提供的特定方法获取到的,然后通过微信传给客户端,客户端拿到code之后再到后台获取openid等微信用户信息,然后进行系统登录相关操作。\[1\] 在开发微信小程序授权登录的业务系统中,可以根据业务需求来扩展注册的功能。大多数互联网业务会在微信小程序授权登录后自动注册用户,但有些传统行业的业务可能只允许某些公司或组织内部的用户登录,不允许微信授权登录就自助注册成系统用户。微信小程序前端框架可以根据自己的需求和擅长的开发方式来选择,但微信授权登录的流程是不变的,可以在此基础上根据业务需求进行修改和优化。\[2\] 在开发微信小程序前端时,可以选择使用微信小程序官方开发方式,也可以使用第三方的开发方式。由于大多数前端开发者都会使用Vue.js开发,可以使用mpvue来开发微信小程序。mpvue是一个基于Vue.js开发微信小程序的框架,可以使用Vue.js的开发方式来开发微信小程序。在开发过程中,可以定义微信小程序授权登录相关的接口文件,将业务后台实现的接口统一管理和调用。\[3\] #### 引用[.reference_title] - *1* *2* *3* [SpringCloud微服务实战——搭建企业级开发框架(五十二):第三方登录-微信小程序授权登录流程设计和实现](https://blog.csdn.net/wmz1932/article/details/129749772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值