authorizer_token.go 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package service
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "net/url"
  6. "gitee.com/yansen_zh/wechat-oplatform-sdk/api"
  7. "gitee.com/yansen_zh/wechat-oplatform-sdk/entities"
  8. "gitee.com/yansen_zh/wechat-oplatform-sdk/utils"
  9. "gitee.com/yansen_zh/wechat-oplatform-sdk/utils/request"
  10. )
  11. // AuthorizerTokenParam 获取/刷新接口调用令牌参数
  12. type AuthorizerTokenParam struct {
  13. ComponentAppId string `json:"component_appid"`
  14. AuthorizerAppId string `json:"authorizer_appid"`
  15. AuthorizerRefreshToken string `json:"authorizer_refresh_token"`
  16. }
  17. // AuthorizerTokenResult 获取/刷新接口调用令牌结果
  18. type AuthorizerTokenResult struct {
  19. entities.Error
  20. AuthorizerAccessToken string `json:"authorizer_access_token"`
  21. ExpiresIn float64 `json:"expires_in"`
  22. AuthorizerRefreshToken string `json:"authorizer_refresh_token"`
  23. }
  24. // AuthorizerToken 获取/刷新接口调用令牌
  25. func AuthorizerToken(componentAccessToken string, param AuthorizerTokenParam) (*AuthorizerTokenResult, error) {
  26. if componentAccessToken == "" {
  27. return nil, errors.New("获取/刷新接口调用令牌 第三方平台的 component_access_token 不能为空")
  28. }
  29. if param.ComponentAppId == "" {
  30. return nil, errors.New("获取/刷新接口调用令牌 第三方平台的 appid 不能为空")
  31. }
  32. if param.AuthorizerAppId == "" {
  33. return nil, errors.New("获取/刷新接口调用令牌 授权方 appid 不能为空")
  34. }
  35. if param.AuthorizerRefreshToken == "" {
  36. return nil, errors.New("获取/刷新接口调用令牌 刷新令牌 不能为空")
  37. }
  38. data, e1 := json.Marshal(param)
  39. if e1 != nil {
  40. return nil, e1
  41. }
  42. queryParam := url.Values{}
  43. queryParam.Set("component_access_token", componentAccessToken)
  44. apiUrl, _ := utils.ParseURL(api.AuthorizerToken, &queryParam)
  45. resp, e2 := request.PostJSON(apiUrl.String(), data)
  46. if e2 != nil {
  47. return nil, e2
  48. }
  49. result := AuthorizerTokenResult{}
  50. if err := json.Unmarshal(resp, &result); err != nil {
  51. return nil, err
  52. }
  53. if result.Code != 0 {
  54. return &result, result.Error
  55. }
  56. return &result, nil
  57. }