authorization.go 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * Copyright (c) 2022 Yansen Zhang
  3. * wxcomponent is licensed under Mulan PSL v2.
  4. * You can use this software according to the terms and conditions of the Mulan PSL v2.
  5. * You may obtain a copy of Mulan PSL v2 at:
  6. * http://license.coscl.org.cn/MulanPSL2
  7. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
  8. * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
  9. * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  10. * See the Mulan PSL v2 for more details.
  11. **/
  12. package wxcomponent
  13. import (
  14. "gitee.com/yansen_zh/wxcomponent/api/authorization"
  15. "gitee.com/yansen_zh/wxcomponent/config"
  16. "gitee.com/yansen_zh/wxcomponent/utils"
  17. )
  18. // 授权与Token
  19. // RefreshToken 获取令牌
  20. // 主要是定时任务调用
  21. func RefreshToken() error {
  22. result, err := authorization.GetComponentToken()
  23. if err != nil {
  24. return err
  25. }
  26. token := result.ComponentAccessToken
  27. expire := utils.GetExpireTime(result.ExpiresIn)
  28. if e := config.RefreshToken(token, expire); e != nil {
  29. return e
  30. }
  31. return nil
  32. }
  33. // CreateAuthLink 自建授权链接, client 默认是 PC 端, 如果是移动端, 需要传入 H5。
  34. // url 为需要跳转的结果页, 必须是原始的值, 不能经过 encode 处理.
  35. // appID 为小程序或者公众号ID, 可以不传
  36. func CreateAuthLink(client, url, appID string) (string, error) {
  37. preAuth, err := authorization.CreatePreAuthCode()
  38. if err != nil {
  39. return "", err
  40. }
  41. return authorization.GetAuthLink(client, preAuth.PreAuthCode, url, appID, 3)
  42. }
  43. // RefreshAuthorizerToken 刷新接口调用令牌
  44. // 主要是定时任务调用
  45. func RefreshAuthorizerToken(appID string) error {
  46. res, err := authorization.RefreshAuthorizerToken(appID, config.GetAuthorizer().GetRefreshToken(appID))
  47. if err != nil {
  48. return err
  49. }
  50. expire := utils.GetExpireTime(res.ExpiresIn)
  51. if err := config.GetAuthorizer().RefreshToken(appID, res.AuthorizerAccessToken, res.AuthorizerRefreshToken, expire); err != nil {
  52. return err
  53. }
  54. return nil
  55. }
  56. // GetAuthorizerInfo 获取授权帐号信息
  57. func GetAuthorizerInfo(appID string) (*authorization.AuthorizerInfoResult, error) {
  58. return authorization.GetAuthorizerInfo(appID)
  59. }