微信小程序开发问题总结 - 微信授权的开发和问题(一)

这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

hi 我是小十七_,之前开发微信小程序的时候遇到过一些问题,解决方案分享给大家~这篇主要是微信授权,上一篇文档在这里:juejin.cn/post/705966…

一. 微信授权简述

获取用户相对于服务号的信息,用来标识唯一用户

1. 静默授权(snsapi_base)

只用来获取用户的 openid(用户相对于该服务号的唯一标识),用户不感知。 第一步:获取 code 用户发起跳转到 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 其中 APPID 是服务号的唯一标识,REDIRECT_URI 是微信的回调地址,微信会带着 code 回调到 REDIRECT_URI

REDIRECT_URI 中的域名需要和公众号设置 -> 功能设置 下的 网页授权域名 一致

http://test_domain/wecall_main/auth.html&code=081szeot1HlEBb0invlt1xfOnt1szeol&state=

每次用户授权带上的 code 将不一样,code 只能使用一次,5分钟未被使用自动过期。

获取code

第二步:用 code 换取 access_token 和 openid 由于公众号的 secret 和获取到的 access_token 安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新 access_token、通过 access_token 获取用户信息等步骤,也必须从服务器发起。

2. 非静默授权(snsapi_userinfo)

用来获取用户的基本信息,需要用户手动同意。

参考:mp.weixin.qq.com/wiki?t=reso… work.weixin.qq.com/api/doc#100…

二. 微信授权过程中遇到的问题

1. 微信回调前端页面会增加一个历史记录

第一步获取 code,微信回调后会增加一条历史记录

方法一(页面不涉及调微信分享时): 列表页 -> 跳转到 https://open.weixin.qq.com/xxxREDIRECT_URI 写后端接口地址) -> 后端获取 code -> 后端通过 code 获取 openid -> url 后拼 openid 跳转到前端页面

方法二(页面涉及调微信分享时): 第一版: 列表页 -> 详情页 -> 跳转到 https://open.weixin.qq.com/xxx -> 微信回调到后端接口 -> 后端获取 code -> 后端通过 code 获取 openid -> url 后拼 openid 跳转到前端页面(多一页) -> 前端取 openid 存起来 -> 回退一页 -> 将 openid 取出 第二版: 列表页 -> 详情页 -> 跳转到 https://open.weixin.qq.com/xxx -> 微信回调到前端授权页(多一页) -> 前端取 url 上 code 存起来 -> 回退一页 -> 前端取 code 调后端接口获取 openid -> 拿到 openid

两种方法区别: 如果页面涉及微信分享,调用微信分享的 sdk 时

wx.onMenuShareAppMessage({
	title: '', // 分享标题
	desc: '', // 分享描述
	link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
	imgUrl: '', // 分享图标
	type: '', // 分享类型,music、video或link,不填默认为link
	dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
});
复制代码

分享链接中的域名或路径必须与当前页面对应的公众号JS安全域名一致,如果分享链接直接写微信授权链接 https://open.weixin.qq.com/xxx 公众号JS安全域名:不支持IP地址,需备案过,需下载文件放到域名指向服务器的目录下

おすすめ

転載: juejin.im/post/7063050037198061576