己方服务器用户数据信息更新,流程是什么?
发表时间:2023-09-26 10:33:01
文章来源:炫佑科技
浏览次数:214
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
己方服务器用户数据信息更新,流程是什么?
本文将帮助读者基于微信开发工具和C#环境实现小程序用户的授权登录。
准备:
微信开发工具下载地址:
开发:
在开发之初,我们首先需要明确微信开发的授权登录流程。 请参考官方API-登录接口。
你会看到微信为开发开发的登录授权流程:
如图所示,是一个转发用户登录授权的过程。
为什么说是前向过程呢? 因为在真正的小程序开发中,我们并不确定用户什么时候需要发起上述登录过程(例如:用户在某些特定场景下丢失了凭证个人开发微信小程序,但他并没有退出小程序而是在小程序内部做跳转以及其他相关操作可能会导致一些意想不到的异常),所以我们需要在这个转发过程之外添加一层检测机制来解决这些异常场景。 在官方 API 中, wx . 就可以在一定程度上解决这个问题。
那么,我们的认证流程实际上应该是:
-小程序wx. 验证登录状态是否无效
-:回调函数被接口调用成功,尚未过期己方服务器用户数据信息更新,流程是什么?,流程结束;
-fail:调用接口失败的回调函数已过期
-》小程序中的wx.login获取code和wx.login 将代码提交到您的服务器
-》自己的服务器提交Appid++代码到微信服务器获取&
-》你自己的服务器根据&生成(出于微信提出的安全考虑,建议开发不要传输其他关键信息)并返回给小程序
-》小程序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
}
这里不再详细描述该接口。 用户可以根据自己的情况对数据进行操作。 微信调用成功时返回的相关参数信息如下:
至此,小程序基本授权登录和用户信息的获取已经完成。
*后一个是我跟别人学来的一个做小零钱的小技巧~给我点钱鼓励一下吧!! ! (๑•̀ㅂ•́)ق✧
仔细阅读以上内容后
有什么不懂的可以留言提问哦~
注:以上内容有所删节,仅保留大致内容。在具体项目中,肯定有一些逻辑需要调整。 想要学习的同学请关注。