项目作者: yicll

项目描述 :
golang版本的wafer-server-api使用的sdk,配合wafer-session-server使用
高级语言: Go
项目地址: git://github.com/yicll/go-wafer-server-sdk.git
创建时间: 2018-12-26T10:09:42Z
项目社区:https://github.com/yicll/go-wafer-server-sdk

开源协议:

下载


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

引入方法

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

使用说明

初始化sdk

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

登录

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

检查登录状态

  1. //配合wafer-sdk的使用场景
  2. data, err := sdk.Check()
  3. //单独使用的场景
  4. //id: 通过调用sdk的login接口返回结果中的Id字段
  5. //skey: 通过调用sdk的login接口返回的结果中的Skey字段
  6. data, err := sdk.Check(id, skey)

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

  1. // SDK统一返回数据结构
  2. // PrintWafer: 是否需要打印出wafer sdk需要的信息,true的话,请直接将PrintResut转成json返回前端,否则忽略,只有使用wafer sdk需要关注
  3. // PrintResult: 需要打印输出到前端的wafer sdk可读信息
  4. // Data: 返回数据
  5. type ReturnResult struct {
  6. PrintWafer bool
  7. PrintResult interface{}
  8. Data ResponseData
  9. }
  10. // wafer-session-server接口返回数据结构体
  11. // Id: session uuid,结合skey用于识别session
  12. // Skey: session skey,结合id组合用于识别session
  13. // UserInfo: 返回的用户信息结构
  14. // Duration: 登录有效期,业务端可忽略
  15. type ResponseData struct {
  16. Id string `json:"id"`
  17. Skey string `json:"skey"`
  18. UserInfo UserInfo `json:"user_info"`
  19. Duration int `json:"duration"`
  20. }
  21. // 解析成功之后的用户信息结构
  22. type UserInfo struct {
  23. OpenId string `json:"openId"`
  24. UnionId string `json:"unionId"`
  25. NickName string `json:"nickName"`
  26. Gender int `json:"gender"`
  27. Language string `json:"language"`
  28. City string `json:"city"`
  29. Province string `json:"province"`
  30. Country string `json:"country"`
  31. AvatarUrl string `json:"avatarUrl"`
  32. }

使用示例

以beego框架为例,实现的api

  1. package controllers
  2. import (
  3. "git.domob-inc.cn/mp-lib/go-wafer-server-sdk/wafer"
  4. "github.com/astaxie/beego"
  5. )
  6. type MainController struct {
  7. beego.Controller
  8. }
  9. // 独立使用的示例
  10. // 登录接口
  11. func (this *MainController) Login() {
  12. sdk := wafer.NewWaferSDK(
  13. "wxf4daafbf1c76d304",
  14. "http://domob-206.domob-inc.cn:6789",
  15. false,
  16. )
  17. code := "001btntB1UQJ7d0VVasB1ZKGtB1btnth"
  18. encryptData := "qs8afGiRlAsjIcNuG9CqxMbMgr6tpaTqOrpa9szUSrYfObQR54ThGhmAadEhkuW/6Flyqa+r+p/4BuKnCLx81TzwqM+7gP3pdOG4rLvlvWCtDes2blsGZm2wNFOqqwj+xfVQqj25JznX75lNbObY5Ic67ZTiaszMzJym0QDy7vaBQMCwdGLfTiVPc35cpfq9ZZzGDVVewHoNGauhPrkOxdu+ec/M6/Fp39J32yEyfi/7lkUwauobdDl7ovazjoFGvfeBOjdXlmBGuF0+W5KKjdsXINLHWL1m4gZD5twLQxICC4A6W6YvXoLAHr41eslvfFvGptIJFOW4GXnEZyhzc7tgubiSvMy9cMA0NcB6o8qIh7GrZ1sp6FSdrCDaDj3zXNlHzgbXvNfX/Q7PkQ18AaofjapSnoEOUxfiHwR/yNpK05yqviCgY7UdoNUSKd3GtMXg+KJTG5yfvOfN23JiaQnJ4P30wJ15IJb07pQsEMk0C6QthDfPvRnxpU07ERgGL7FKmP1f3Z2HlrzET/Z2Jw=="
  19. iv := "nU6TJmoVfrz8Vt8FJbrZYA=="
  20. data, err := sdk.Login(code, encryptData, iv)
  21. if err != nil {
  22. beego.Error(err.Error())
  23. }
  24. this.Data["json"] = data.Data
  25. this.ServeJSON()
  26. }
  27. // 检查登录状态
  28. func (this *MainController) Check() {
  29. sdk := wafer.NewWaferSDK(
  30. "wxf4daafbf1c76d304",
  31. "http://domob-206.domob-inc.cn:6789",
  32. false,
  33. )
  34. id := "54cddc016436921eb6da31962d88e946"
  35. skey := "1e9d61aa73f67407f374326cde532b13"
  36. data, err := sdk.Check(id, skey)
  37. if err != nil {
  38. beego.Error(err.Error())
  39. }
  40. this.Data["json"] = data.Data
  41. this.ServeJSON()
  42. }
  43. // 配合前端wafer sdk使用
  44. // 登录接口
  45. func (this *MainController) Login1() {
  46. sdk := wafer.NewWaferSDK(
  47. "wxf4daafbf1c76d304",
  48. "http://domob-206.domob-inc.cn:6789",
  49. true,
  50. this.Ctx.Request,
  51. )
  52. data, err := sdk.Login()
  53. if err != nil {
  54. beego.Error(err.Error())
  55. }
  56. if data.PrintWafer {
  57. this.Data["json"] = data.PrintResult
  58. } else {
  59. this.Data["json"] = data.Data
  60. }
  61. this.ServeJSON()
  62. }
  63. // 检查登录状态
  64. func (this *MainController) Check1() {
  65. sdk := wafer.NewWaferSDK(
  66. "wxf4daafbf1c76d304",
  67. "http://domob-206.domob-inc.cn:6789",
  68. true,
  69. this.Ctx.Request,
  70. )
  71. data, err := sdk.Login()
  72. if err != nil {
  73. beego.Error(err.Error())
  74. }
  75. if data.PrintWafer {
  76. this.Data["json"] = data.PrintResult
  77. } else {
  78. this.Data["json"] = data.Data
  79. }
  80. this.ServeJSON()
  81. }