微信小程序网络通信(一)

本文链接:https://blog.csdn.net/melovemingming/article/details/82831749
微信小程序网络
服务器网络配置
支持request 普通网络请求。
支持套接字通信 WebSocket
支持上传文件 uploadFile
支持下载文件 downloadFile

回调
只要成功以后就会有success回调。

关于https
小程序必须使用https
必须经过icp备案

储存
微信小程序有自己的本地缓存

用户信息
小程序登录
小程序登录来一张时序图,此时序图书来自于微信官方。

大概也能看懂一点,整个过程需要经过开发者服务器。
其中code为临时登录凭证,
先调用 wx.login(Object object) 获取临时登录凭证,及code,然后wx.request()方法将登录凭证发送到开发者服务器,开发者服务器得到code以后通过appiid和appsecret以及code将信息发送到微信接口服务,然后微信接口服务器将信息返回session_key + openid 等信息,接着开发者服务器进行自定义登录态,即将登录态将openid,session_key进行关联,然后向小程序防返回自定义登录态。
接着将自定义登录态存入storage。
以后再次发送request的时候,将会携带开发者定义的自定义登录态,然后将自定义登录态查询openid和session_key 在开发者服务器上进行查询,接着 返回业务数据

整个过程类似于鉴权的过程。

其中session_key 是对用户数据进行加密签名的密钥,即对用户数据进行加密用的。

unionID
unionID为用来区分用户的唯一性用的。即同一个应用对于同一个微信开发平台下的不同应用unioID为相同的。

授权
部分接口需要经过用户授权才能调用,如果用户授权,将会调用该接口,如果用户拒绝授权,将会调用fail的接口回调。

开放数据校验和解密

上面图是来自于微信官方的流程图
整个关键在于session_key 通过session_key对数据进行签名和加密,然后整个传送到开发者服务器,在开发者服务器上进行解密操作,即使用session_key进行解密。整个过程全程加密,确保了信息在中途不能被截获,不能被伪造,即确保了信息的安全。

数据签名校验
微信会对明文传输的数据进行签名,开发真根据这些对明文的数据进行签名校验,防止数据被篡改。

签名算法 sha1 一种哈希签名算法,目前已经被证实可以被碰撞。 即被google证实两份内容不同但是SHA-1会完全相同的碰撞实验 https://zh.wikipedia.org/zh-sg/SHA-1

微信小程序HTTP网络通信
小程序需要使用网络通信,从后台拉取信息。

搭建后台服务器
后台服务器使用node.js 外加nginx进行转发,在node.js上为了方便起见,直接不配置https证书,在nginx上配置https证书,为了防止出现意外,所有的node.js暴露出的端口都在内网,只暴露nginx的接口
如下

node.js -> nginx -> 微信小程序
1
配置node.js
进行npm安装koa框架,并暴露出端口

由于比较懒,就不用docker了,直接上服务器上npm,在说,本身也就一台服务器,用不上docker,服务器配置还有点低,目前有三台,一台腾讯云,配置blog,一台灯塔国的,配置ss服务,一台阿里云的供自己折腾,

域名解析
解析出域名api.iming.info 用于进行api

服务器配置
nginx
nginx 添加网站,并添加ssl证书
添加http://127.0.0.1:1937 进行反向代理

pm2
接着pm2管理器,添加pm2进行管理

安装npm包
按照规范,是应该使用docker进行的,然后git上传,在服务器端用git直接拉下来。这里呢,只有一台机器,直接省事,整个过程应该是全程自动化的,╮(╯▽╰)╭

进入目录,进行npm

[[email protected] api.iming.info]# npm install --save koa
npm WARN saveError ENOENT: no such file or directory, open ‘/www/wwwroot/api.iming.info/package.json‘
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open ‘/www/wwwroot/api.iming.info/package.json‘
npm WARN api.iming.info No description
npm WARN api.iming.info No repository field.
npm WARN api.iming.info No README data
npm WARN api.iming.info No license field.

+ [email protected]
added 40 packages in 58.543s
[[email protected] api.iming.info]#
1
2
3
4
5
6
7
8
9
10
11
12
13
在目录下新建app.js

const koa = require(‘koa‘);
const app = new koa();

const main = ctx => {
ctx.response.body = "hello world";
};

app.use(main);
app.listen(1937);
1
2
3
4
5
6
7
8
9
接着用pm2管理器,启动app.js

接着访问 https://api.iming.info/ 出现hello world的json格式的数据即完成最基础的node.js服务器搭建

微信后台添加域名
进入后台,添加api.iming.info

好吧,是省事了,直接将上传域名,下载域名全部添加为同一个域名了,事实上还是可以再分开的,在分开为上传的一个域名,下载的一个域名,只需要添加request域名即可。
下一篇,继续进行前后端通信

原文地址:https://www.cnblogs.com/Ph-one/p/11698434.html

时间: 2024-08-07 01:34:31

微信小程序网络通信(一)的相关文章

微信小程序之网络通信

关于网络通信,这里我使用的是wx.request,官方代码示例如下: wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 默认值 }, success (res) { console.log(res.data) } }) 对于初学者而言,官方示例可能会看不怎么懂,所以我就以我自己当初项目驱动学习的方式(开发个人的

微信小程序调试之【不在以下合法域名列表中】

在微信小程序中进行网络通信,只能和指定的域名进行通信.目前,微信小程序提供如下四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downloadFile) WebSocket通信(wx.connectSocket) 目前,无论上述哪一种请求方式,都有次数限制.本文记录的是,我在使用豆瓣论坛API请求时,遇到的错误截图及解决办法.简记如下: 一.问题截图 小程序调试中,遇到如下错误提示: "xxx不在以下合法域名列表中 ,请参

微信小程序开发:http请求

在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downloadFile) WebSocket通信(wx.connectSocket) 这里以介绍wx.request,wx.uploadFile,wx.dowloadFile三种网络请求为主 设置域名 要微信小程序进行网络通信,必须先设置域名,不然会出现错误: URL 域名不合法,请在 mp 后台配置后重试

[转]浅谈微信小程序

本文转自:http://www.cnblogs.com/liziyou/p/6340159.html 微信小程序 1.什么是小程序 小程序是指微信公众号平台小程序,小程序可以在微信内被便捷的获取和转播:是一种不需要下载安装即可使用的应用小程序,和原有的三种公众号是平行的体系. 2.小程序获取方式 一.线下扫码 小程序最基础的获取,是二维码,可以通过微信扫一扫二维码的方式进入小程序. 二.微信搜索 在微信客户端的搜索功能,输入小程序名称获取小程序 三.公众号关联 同一个的小程序和公众号可以进行关联

微信小程序内测申请

想申请微信小程序的内测?别做梦了! 小程序内测是邀请制的,目前就发放了200个内测邀请.正因为稀缺,江湖传言内测资格已经炒到300万(一套房)一个了 但是!!!!你可以先熟悉一下相关资料和文档,下载一个开发工具在自己电脑上玩一下,虽然部分功能受到了限制,但是还是挺有意思的! 小程序开发过程中遇到的各种坑 摘要: 本文收集微信小程序.应用号开发过程中的各种坑,以及疑难问题.不定期整理解决方案. 如果你在开发过程中遇到了问题,请将你的问题在评论中回复,我会不定期整理. 本文收集微信小程序.应用号开发

微信小程序“信用卡还款”项目实践

小程序概述 11月3日晚,微信团队对外宣布,微信小程序开放公测.开发者可登陆微信公众平台申请,开发完成后可以提交审核,公测期间暂不能发布. 我们前一段时间也进行了小程序开发,现在来对之前的开发体验做一个总结. 1. 小程序是什么? 微信小程序是一种介于原生app.和web app的hybrid.通过微信进行加载,实现类似原生app的流畅.相对原生app来说,小程序更加轻量.更新实时.跨平台:相对web app来说,小程序资源离线,体验更流畅. 微信小程序的设计目标是通过尽可能简单.高效的方式让开

微信小程序网络请求

配置服务器域名: 每个微信小程序需要事先设置一个通讯域名,小程序只可以跟指定的域名进行网络通信. 服务器域名在:小程序后台=> 开发=> 开发设置 =>  服务器域名中配置,配置时需注意: 1.域名只支持https(request, uploadFile,downloadFile)和wss(connectSocket)协议. 2.域名不能使用ip地址或localhost. 3.域名必须经过ICP备案. 4.服务器域名一个月内可申请5次修改. 发起get请求: 调用wx.request(o

微信小程序底层实现原理

一. wa的运行环境 根据微信官方的说明,wa的运行环境有3个平台,IOS的webkit(苹果开源的浏览器内核),Android的X5(QQ浏览器内核),开发时用的nw.js(C++实现的web转桌面应用): 二.为什么wa不直接运行在浏览器(webview)中,而要绕过浏览器直接调用内核呢? 因为运行在浏览器中的webapp是做不了监控的,而wa的表现是半native app,半web app,而native app与web app和一个很重要的区别就是native app有自己的生命周期,在

微信小程序--图片相关问题合辑

图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.previewImage预览图片 微信小程序之预览图片 小程序开发:上传图片到腾讯云 .NET开发微信小程序-上传图片到服务器 微信小程序本地图片处理--按屏幕尺寸插入图片 [微信小程序]上传图片到阿里云OSS Python Flask小程序文件(图片)上传技巧 小程序图片上传阿里OSS使用方法 微信小程序问题汇