You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

access_token.go 952 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package wechat
  2. import (
  3. "code.gitea.io/gitea/modules/redis/redis_client"
  4. "code.gitea.io/gitea/modules/redis/redis_key"
  5. "time"
  6. )
  7. const EMPTY_REDIS_VAL = "Nil"
  8. func GetWechatAccessToken() string {
  9. token, _ := redis_client.Get(redis_key.WechatAccessTokenKey())
  10. if token != "" {
  11. if token == EMPTY_REDIS_VAL {
  12. return ""
  13. }
  14. live, _ := redis_client.TTL(redis_key.WechatAccessTokenKey())
  15. //refresh wechat access token when expire time less than 5 minutes
  16. if live > 0 && live < 300 {
  17. refreshAccessTokenCache()
  18. }
  19. return token
  20. }
  21. return refreshAccessTokenCache()
  22. }
  23. func refreshAccessTokenCache() string {
  24. r := callAccessToken()
  25. var token string
  26. if r != nil {
  27. token = r.Access_token
  28. }
  29. if token == "" {
  30. redis_client.Setex(redis_key.WechatAccessTokenKey(), EMPTY_REDIS_VAL, 10*time.Second)
  31. return ""
  32. }
  33. redis_client.Setex(redis_key.WechatAccessTokenKey(), token, time.Duration(r.Expires_in)*time.Second)
  34. return token
  35. }