uniapp 微信登录记录

1. 按钮

<button type="default" @click="login_wx">LOGIN WX1{{if_login}}</button>

2.script部分

const if_login=ref(null)
const uniIdCo = uniCloud.importObject('uni-id-co')

function login_wx() {
		console.log("in log");
		uni.login({
			provider: 'weixin', //使用微信登录
			success: function(res) {
				uniIdCo.loginByWeixin({ code: res.code })
                .then(e =>if_login.value=e.uid)
                .catch(e => console.log(e))
			},
			fail: (e) => {
				console.log(e);
			}
		})
}

uni.login是的success部分,调用uni-id-co里的loginbyWeixin方法

### UniApp 中实现微信授权登录并绑定用户的流程 #### 1. 前端部分:UniApp 小程序中的微信授权登录 为了实现在 UniApp 开发的小程序中完成微信授权登录,前端需要处理用户点击按钮触发的事件来启动授权过程。 当用户同意授权后,会获得一个 code 参数,该参数用于换取 session_key 和 openid。此操作通过 `wx.login` API 完成[^1]: ```javascript // 获取code uni.login({ provider: 'weixin', success: function (loginRes) { console.log('Login Success', loginRes); const { code } = loginRes; // 发送code到服务器交换openid和session_key uni.request({ url: 'https://yourserver.com/api/wechat/login', // 替换成实际接口地址 method: "POST", data: { js_code: code, }, success(res){ console.log("Server Response:", res.data); // 存储token或其他鉴权信息至本地存储 uni.setStorageSync('authToken', res.data.token || ''); // 更新应用状态或跳转页面... } }); } }); ``` #### 2. 后端部分:接收来自客户端发送过来的数据并与微信服务交互验证身份 在接收到从前端传来的临时登陆凭证(即上述代码片段里的 `js_code`),后端需向微信服务器发起请求以获取用户的唯一标识符 OpenID 及其他可能的信息如 UnionID 或 SessionKey 等。 通常情况下,这一步骤涉及调用微信提供的 OAuth 接口 `/sns/jscode2session` 来完成认证逻辑: ```python import requests def wechat_login(js_code): app_id = 'YOUR_APP_ID' secret = 'YOUR_SECRET_KEY' api_url = f"https://api.weixin.qq.com/sns/jscode2session?appid={app_id}&secret={secret}&js_code={js_code}&grant_type=authorization_code" response = requests.get(api_url).json() if not response.get('errcode'): open_id = response['openid'] session_key = response['session_key'] # 这里可以进一步保存open_id, 创建/关联账户等业务逻辑 return {'status': True, 'data': {'openId': open_id}} else: raise Exception(f"WeChat Login Failed with error:{response}") ``` #### 3. 绑定用户信息 一旦成功完成了以上两步的操作,则可以在数据库中创建一个新的记录或者是更新现有记录来表示新注册或是已存在的用户已经绑定了当前使用的微信号。具体做法取决于应用程序的设计需求,在某些场景下还需要额外收集手机号码作为更严格的验证手段[^3]。 对于手机号授权的情况,可以通过调用 `getPhoneNumber` 方法让用户提供电话号码,并将其与之前得到的 OpenID 关联起来形成完整的个人资料档案。 ```javascript uni.getPhoneNumber({ success: function (res) { let encryptedData = res.encryptedData; let iv = res.iv; // 将加密后的数据传递给后端解密 uni.request({ url: '/path/to/backend/endpoint', method: 'POST', data: { encryptedData, iv }, success(response) { console.log('Phone number received:', response.data.phoneNumber); // 处理后续事项,比如显示欢迎消息或将电话号码存入缓存 } }) } }) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值