yicll / go-wafer-server-sdk

golang版本的wafer-server-api使用的sdk,配合wafer-session-server使用

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Golang Wafer Server SDK

本项目是 go-wafer-session-server 组成部分

可搭配前端的wafer-sdk使用,也可以单独引入项目中使用

go版本wafer sdk

使用方法

由于公司的gitlab仓库没有支持https,所以go get的时候需要加上-insecure参数

go get github.com/yicll/go-wafer-server-sdk

引入方法

import (
	"github.com/yicll/go-wafer-server-sdk/wafer"
)

使用说明

初始化sdk

sdk := wafer.NewWaferSDK(
	"wxf4daafbf1c76d304",					 //小程序的appid,不能为空
	"http://domob-206.domob-inc.cn:6789",    //wafer-session-server地址
	true,									 // 是否配合前端wafer-sdk使用,true:是、false:否
	this.Ctx.Request,						 //当使用wafer-sdk为true的时候,该参数不能为空,*http.Request
)

登录

//配合wafer-sdk的使用场景
data, err := sdk.Login()

//单独使用的场景
//code: 小程序调用login接口获取到的临时登录凭据
//encryptData: 加密的用户信息
//iv: 加密向量偏移量
data, err := sdk.Login(code, encryptData, iv)

检查登录状态

//配合wafer-sdk的使用场景
data, err := sdk.Check()

//单独使用的场景
//id: 通过调用sdk的login接口返回结果中的Id字段
//skey: 通过调用sdk的login接口返回的结果中的Skey字段
data, err := sdk.Check(id, skey)

Login&Check方法返回结构体ReturnResult 详细说明

// SDK统一返回数据结构
// PrintWafer: 是否需要打印出wafer sdk需要的信息,true的话,请直接将PrintResut转成json返回前端,否则忽略,只有使用wafer sdk需要关注
// PrintResult: 需要打印输出到前端的wafer sdk可读信息
// Data: 返回数据
type ReturnResult struct {
	PrintWafer  bool
	PrintResult interface{}
	Data        ResponseData
}

// wafer-session-server接口返回数据结构体
// Id: session uuid,结合skey用于识别session
// Skey: session skey,结合id组合用于识别session
// UserInfo: 返回的用户信息结构
// Duration: 登录有效期,业务端可忽略
type ResponseData struct {
	Id       string   `json:"id"`
	Skey     string   `json:"skey"`
	UserInfo UserInfo `json:"user_info"`
	Duration int      `json:"duration"`
}

// 解析成功之后的用户信息结构
type UserInfo struct {
	OpenId    string `json:"openId"`
	UnionId   string `json:"unionId"`
	NickName  string `json:"nickName"`
	Gender    int    `json:"gender"`
	Language  string `json:"language"`
	City      string `json:"city"`
	Province  string `json:"province"`
	Country   string `json:"country"`
	AvatarUrl string `json:"avatarUrl"`
}

使用示例

以beego框架为例,实现的api

package controllers

import (
	"git.domob-inc.cn/mp-lib/go-wafer-server-sdk/wafer"

	"github.com/astaxie/beego"
)

type MainController struct {
	beego.Controller
}

// 独立使用的示例
// 登录接口
func (this *MainController) Login() {

	sdk := wafer.NewWaferSDK(
		"wxf4daafbf1c76d304",
		"http://domob-206.domob-inc.cn:6789",
		false,
	)
	
	code := "001btntB1UQJ7d0VVasB1ZKGtB1btnth"
	encryptData := "qs8afGiRlAsjIcNuG9CqxMbMgr6tpaTqOrpa9szUSrYfObQR54ThGhmAadEhkuW/6Flyqa+r+p/4BuKnCLx81TzwqM+7gP3pdOG4rLvlvWCtDes2blsGZm2wNFOqqwj+xfVQqj25JznX75lNbObY5Ic67ZTiaszMzJym0QDy7vaBQMCwdGLfTiVPc35cpfq9ZZzGDVVewHoNGauhPrkOxdu+ec/M6/Fp39J32yEyfi/7lkUwauobdDl7ovazjoFGvfeBOjdXlmBGuF0+W5KKjdsXINLHWL1m4gZD5twLQxICC4A6W6YvXoLAHr41eslvfFvGptIJFOW4GXnEZyhzc7tgubiSvMy9cMA0NcB6o8qIh7GrZ1sp6FSdrCDaDj3zXNlHzgbXvNfX/Q7PkQ18AaofjapSnoEOUxfiHwR/yNpK05yqviCgY7UdoNUSKd3GtMXg+KJTG5yfvOfN23JiaQnJ4P30wJ15IJb07pQsEMk0C6QthDfPvRnxpU07ERgGL7FKmP1f3Z2HlrzET/Z2Jw=="
	iv := "nU6TJmoVfrz8Vt8FJbrZYA=="
	
	data, err := sdk.Login(code, encryptData, iv)
	if err != nil {
		beego.Error(err.Error())
	}

	this.Data["json"] = data.Data

	this.ServeJSON()
}

// 检查登录状态
func (this *MainController) Check() {

	sdk := wafer.NewWaferSDK(
		"wxf4daafbf1c76d304",
		"http://domob-206.domob-inc.cn:6789",
		false,
	)
	
	id := "54cddc016436921eb6da31962d88e946"
	skey := "1e9d61aa73f67407f374326cde532b13"

	data, err := sdk.Check(id, skey)
	if err != nil {
		beego.Error(err.Error())
	}
	
	this.Data["json"] = data.Data

	this.ServeJSON()
}

// 配合前端wafer sdk使用
// 登录接口
func (this *MainController) Login1() {

	sdk := wafer.NewWaferSDK(
		"wxf4daafbf1c76d304",
		"http://domob-206.domob-inc.cn:6789",
		true,
		this.Ctx.Request,
	)
	data, err := sdk.Login()
	if err != nil {
		beego.Error(err.Error())
	}

	if data.PrintWafer {
		this.Data["json"] = data.PrintResult
	} else {
		this.Data["json"] = data.Data
	}

	this.ServeJSON()
}

// 检查登录状态
func (this *MainController) Check1() {

	sdk := wafer.NewWaferSDK(
		"wxf4daafbf1c76d304",
		"http://domob-206.domob-inc.cn:6789",
		true,
		this.Ctx.Request,
	)

	data, err := sdk.Login()
	if err != nil {
		beego.Error(err.Error())
	}

	if data.PrintWafer {
		this.Data["json"] = data.PrintResult
	} else {
		this.Data["json"] = data.Data
	}

	this.ServeJSON()
}

About

golang版本的wafer-server-api使用的sdk,配合wafer-session-server使用


Languages

Language:Go 100.0%