本文将与您分享有关如何实施微信Mini程序的用户授权登录功能的内容。编辑认为它非常实用,因此我与您共享参考,并关注编辑来看看。
准备:
微信开发人员工具下载地址:
微信小程序开发文件:
发展:
在开发开始时,我们需要澄清微信政党已制定的授权登录过程,并参考官方API登录接口。
您将看到微信为开发人员制定的登录授权过程:
如图所示,这是向前用户登录授权的过程。
为什么这是一个前进过程?因为在实际的MINI计划的开发中,我们不确定用户何时需要启动上述登录过程(例如:在某些特定的情况下,用户的凭据丢失了,但他不退出Mini计划,而是在Mini计划中跳跃和其他相关操作,这可能会导致某些出乎意料的例外),因此我们需要在此远程处理中添加这些远程攻击的官方范围。可以在一定程度上解决这个问题。
然后,我们的认证过程实际上应该是:
- 迷你程序WX。验证登录状态无效
- :接口成功调用的回调函数尚未过期,过程结束;
- 失败:未能调用接口的回调函数已过期
- 》小型程序WX。获取代码和WX。将代码提交您自己的服务器
- 》提交自己的服务器 + +代码以进入微信服务器&
- 》我们的服务器是根据&(基于微信的基于安全性的注意事项生成的
- 》迷你程序WX。存储(随后的用户操作需要凭据时,使用此参数)
- 》迷你程序WX。获取用户信息 + WX。获得数据后,将其提交给您自己的服务器
- 》更新您自己的服务器的SQL用户数据信息和过程结束;
这个想法已整理出来,该过程将下一步实施
迷你计划:
在小程序中,创建一个新的常规JS作为基本支持
并引用一些需要引用的页面
var common = require("../Common/Common.js")
接下来,在.js中实现逻辑
//用户登陆
function userLogin() {
wx.checkSession({
success: function () {
//存在登陆态
},
fail: function () {
//不存在登陆态
onLogin()
}
})
}
function onLogin() {
wx.login({
success: function (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'Our Server ApiUrl',
data: {
code: res.code
},
success: function (res) {

const self = this
if (逻辑成功) {
//获取到用户凭证 存儲 3rd_session
var json = JSON.parse(res.data.Data)
wx.setStorage({
key: "third_Session",
data: json.third_Session
})
getUserInfo()
}
else {
}
},
fail: function (res) {
}
})
}
},
fail: function (res) {
}
})
}
function getUserInfo() {
wx.getUserInfo({
success: function (res) {
var userInfo = res.userInfo
userInfoSetInSQL(userInfo)
},
fail: function () {
userAccess()
}
})
}
function userInfoSetInSQL(userInfo) {
wx.getStorage({
key: 'third_Session',
success: function (res) {
wx.request({
url: 'Our Server ApiUrl',
data: {
third_Session: res.data,
nickName: userInfo.nickName,
avatarUrl: userInfo.avatarUrl,
gender: userInfo.gender,
province: userInfo.province,
city: userInfo.city,
country: userInfo.country
},
success: function (res) {
if (逻辑成功) {
//SQL更新用户数据成功
}
else {
//SQL更新用户数据失败
}
}
})
}
})
}
在这一点上,基本上已经实现了迷你程序终端的过程,然后实现了我们方面的服务API。
接口逻辑示例
if (dicRequestData.ContainsKey("CODE"))
{
string apiUrl = string.Format("https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code", ProUtil.SmartAppID, ProUtil.SmartSecret, dicRequestData["CODE"]);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(apiUrl);
myRequest.Method = "GET";
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
myResponse.Close();
reader.Close();
reader.Dispose();
//解析
userModel ReMsg = JSONUtil.JsonDeserialize(content); //解析
if ((!string.IsNullOrWhiteSpace(ReMsg.openid)) && (!string.IsNullOrWhiteSpace(ReMsg.session_key)))
{
// 成功 自定义生成3rd_session与openid&session_key绑定并返回3rd_session
}
else
{
// 错误 未获取到用户openid 或 session
}
}
else
{
// 错误 未获取到用户凭证code
}
该界面将在这里不描述。用户可以根据自己的情况操作数据。呼叫成功后,微信政党返回的相关参数信息如下。
谢谢您的阅读!这是本文的结尾:“如何实施微信中的用户授权登录函数”。我希望以上内容对每个人都有帮助,以便您可以学习更多知识。如果您认为这篇文章很好,可以分享它以供更多人看到它!