2025 独立开发者训练营:AI Agent!查看介绍 / 立即报名 →

博客

微信小程序:绑定微信帐号的服务端接口设计(WordPress)

用户可以在小程序那里选择用微信登录, 在用微信登录之前要把用户的微信帐号与网站帐号绑定在一起,就是在数据库里记录一下用户微信给我们提供的 openid 。绑定的时候可以保存用户的一些其它的信息,比如用户的微信头像,所在城市,省份等等。在小程序上调用 wx.getUserInfo 接口可以获取到微信用户的相关信息。得到以后,把这些信息发送到后端服务接口来处理。

微信小程序:用户注册功能实现

先了解一下用类(Class)的形式去创建一个 WordPress REST 接口,接口可以处理注册新用户的请求。在小程序那里准备一个注册用户用的页面,用户输入,想要注册的用户名,邮件地址,还有密码申请登录,遇到错误会在小程序的页面上显示出来。一切正常,后端接口把用户存储在数据库里,小程序得到服务端的成功提示以后,自动发起登录请求,成功以后会给用户签发 JWT,打开用户的个人档案页面显示相关的信息。新发布的《微信小程序:应用后台__用户注册》介绍了整个过程。

圣诞礼物:两瓶杰克丹尼威士忌

前两天我说要请大家喝两杯,就是今天了,准备了两瓶杰克丹尼威士忌。之前是因为看了一部电影(王牌特工 2,不算好看:),里面有句台词说:“我喜欢 Jack + 可乐”,说的就是杰克丹尼威士忌跟可乐掺一块儿喝。突然也想试一下(植入广告起作用了),就先上京东买了瓶。又突然想起快过圣诞节了,一直在想今年送点什么礼物,觉得烈酒也是不错的礼物,即使不爱喝,也可以收藏起来,所以就想多买几瓶送给大家。

我之前没喝过,上周末约了几个朋友在家把它喝光了。买了些可乐,7 喜柠檬水,水溶 100C 柠檬水,杯子里放六分之一的酒就行,剩下再放些柠檬水,加点冰块更好一些。在冰箱里找了一小瓶冰了挺长时间的矿泉水,费挺大劲才把里边儿的冰砸碎。女士也都挺喜欢喝的,加柠檬水的威士忌酸酸甜甜的,更像是饮料,只不过带酒精,喝多了也会有点懵。小雪说加可乐的杰克丹尼有点口服液的味儿,我喝是觉得有点巧克力的香味。

想跟你喝两杯,又快圣诞节了

又一年的圣诞节。它总是让我回想起一个特别的场景 ...   今年,想请几位朋友哈(喝)两杯,准备了 6 瓶杰克丹尼,送给六位朋友。以薄酒,表示一下我对大伙的感激之情。没有办法请到所有人,因为暂时还没有这个实力。所以我就随便问几个问题,大家到时候留下评论就行了。

那就跟大家约在这个月 6 号,13 号还有 20 号,上午 10 点。每次问个小问题(在宁皓网微信公众号),说对最快的前两位朋友(年龄 18 +),我就把酒送到您的府上。

我不算是爱酒之人,偶尔约朋友小酌几杯,也觉得是很有乐趣的一件事。

几许将烈酒斟满,那空杯中
借着那酒洗去悲伤
旧日的知心好友,何日再会
但愿共聚互诉往事
—— 《再见理想》by Beyond

用人类语言解释:REST API 与 RESTful API

API,应用程序接口,也可以叫应用程序界面,或者简称为应用接口。应用程序的设计可以相当复杂,但最终的用户并不需要知道应用程序的内部到底是如何工作的,你只需要给用户提供一些操作接口,再告诉用户怎么用这些接口就行了。

用个现实例子,比如手机上的音量按键,就像是应用程序里的接口,用户不用知道按下按键具体发生的事情,这是工程师研究的东西,用户只知道按下这个按钮可以增大音量,或者减小音量。再回到程序设计来也是一样的,你的应用提供了一些接口给用户,用户可以通过这些接口去做一些事情。

REST,就是一种应用接口的设计风格。RESTful 是 REST 的形容词形式,RESTful API 指的是 REST 风格的接口。一般 REST 与 RESTful 是一个意思,区别就是一个是名词,一个是形容词。

如果有人对你说,我的应用支持 REST 接口。他的意思就是,你可以通过 HTTP + 具体的动作去处理他的应用上的一些资源(Resources),比如文章,评论,文件,用户 ...

微信小程序:基于 JWT(JSON Web Token) 的身份验证

在微信小程序里,用户的相关信息是在后端服务那里保存的。我们可以给用户在小程序上准备一个登录页面,用户输入他的用户名还有密码,可以申请登录。后端服务收到登录请求,验证用户输入的登录信息是否有效,如果有效就给用户签发一个 JSON Web Token,小程序收到签发的 Token 会把它存储在自己的 Storage 里,下回用户再请求需要权限的资源的时候,可以带着签发的这个 Token,服务端那里会验证 Token 的有效性,然后决定是否要执行用户请求的动作。

上面说的就是在小程序上实施基于 JSON Web Token 的身份验证的主要流程。在新发布的《微信小程序:应用后台__身份验证》这个课程里介绍了如何开发实现这种身份验证的功能。后端服务我用了 WordPress,你也可以选择其它框架作为小程序的后端服务,比如 Drupal,Laravel,Rails,Node.js 等等。流程基本都是一样的。

微信小程序:回调,Promise,async,await 的使用例子

下面用个例子演示在微信小程序里使用 Promise,async,await 这些东西。小程序里有个 wx.authorize 接口可以向用户要些权限,访问用户对应的资源,比如得到用户的位置,获取用户的相关信息等等。wx.getSetting 这个接口可以得到用户的授权配置信息,比如用户是否已经授权我们使用他的用户信息。

微信小程序:微信登录流程讨论

小程序里用微信的开放接口微信登录,跟大家讨论一下在应用里面实施这个微信登录功能的设计流程。

获取用户的微信登录状态

在应用里我们先要得到用户的微信登录状态,这个状态要在我们的应用的后端服务那里对微信接口发出请求并获取。

小程序请求登录码

得到登录状态首先得有个登录码,小程序提供了一个 wx.login 接口,它可以得到登录码。

wx.login({
  success: (login) => {
    console.log(login.code)
  }
})

这个登录码会在 wx.login 接口的成功回调得到的响应的 code 属性里面。有了这个登录码,我们要去请求自己的后端服务接口,让接口去请求微信的登录接口。这个请求可以在小程序里面用 wx.request 来发出,请求的类型是 POST,请求的数据里面要包含获取到的登录码。

微信小程序:用户授权 wx.authorize

微信小程序里,使用一些接口的时候需要得到用户的授权,用户同意以后我们就可以得到相应的权限,去做一些事情。比如获取用户微信帐号相关信息,得到用户的位置,保存到相册等等。

比如我想知道用户微信帐号相关的信息。先用 wx.getSetting 检查一下用户当前对我们的小程序的授权状态,如果发现用户还没有授权小程序查看他的用户信息,就去调用 wx.authorize 弹出对话窗提醒用户是否要授权小程序得到他的用户信息。用户如果按了同意,接下来我们就可以使用 wx.getUserInfo 这个接口去得到用户相关的信息了,比如他的头像,名字等等。

WordPress:注册新的 REST 接口

WordPress 核心自带了一些 REST 接口,可以处理文章,用户,评论等等这些资源。有时候我们需要自己加工一些接口功能,WordPress 支持我们添加这样的自定义 REST 接口。注册的接口相关的信息可以挂载到 rest_api_init 这个钩子函数上。注意接口用的是 register_rest_route 函数。

Endpoints

一个例子:

<?php

function ninghao_rest_hello_callback() {
  return 'hello ~';
}

function ninghao_rest_register_route() {
  register_rest_route( 'ninghao/v1', 'hello', [
    'methods'   => 'GET',
    'callback'  => 'ninghao_rest_hello_callback'
  ] );
}

add_action( 'rest_api_init', 'ninghao_rest_register_route');
微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点