租车-微服务
00 分钟
2022-8-26

简介

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。

系列

  1. 云原生 API 网关,gRPC-Gateway V2 初探

业务流程

notion image

初始化项目

开发环境

为少 的本地开发环境

初始代码结构

使用 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.goauth_grpc.pb.goauth.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

测试

notion image

Refs


评论