简介
小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。
系列
业务流程
初始化项目
开发环境
为少
的本地开发环境初始代码结构
使用
go mod init server
初始化 Go
项目,这里(demo
)我直接采用 server
作为当前 module
名字。go-grpc-gateway-v2-microservice
领域(auth.proto)定义
使用 gRPC-Gateway 暴露 RESTful JSON API
auth.yaml
定义
根据配置生成代码
使用 gen.sh
生成 gRPC-Gateway
相关代码
运行:
成功后,会生成
auth.pb.go
,auth_grpc.pb.go
,auth.pb.gw.go
文件,代码结构如下:整理一下包:
初步实现 Auth gRPC Service Server
实现 AuthServiceServer
接口
我们查看生成
auth_grpc.pb.go
代码,找到 AuthServiceServer
定义:我们在
auth/auth/auth.go
进行它的实现:关键代码解读:
这里有一个非常重要的编程理念,用好可以事半功倍。接口定义由使用者定义而不是实现者,如这里的
OpenIDResolver
接口。实现 OpenIDResolver
接口
这里用到了社区的一个第三方库,这里主要用来完成开发者服务器向微信服务器换取 用户唯一标识
OpenID
、 用户在微信开放平台帐号下的唯一标识 UnionID
(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key
。当然,不用这个库,自己写也挺简单。我们在
auth/wechat/wechat.go
进行它的实现:关键代码解读:
配置 Auth Service gRPC Server
auth/main.go
初步实现 API Gateway
gateway/main.go