officialaccount.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package officialaccount
  2. import (
  3. "github.com/silenceper/wechat/v2/credential"
  4. "github.com/silenceper/wechat/v2/officialaccount"
  5. offConfig "github.com/silenceper/wechat/v2/officialaccount/config"
  6. opContext "github.com/silenceper/wechat/v2/openplatform/context"
  7. "github.com/silenceper/wechat/v2/openplatform/officialaccount/js"
  8. "github.com/silenceper/wechat/v2/openplatform/officialaccount/oauth"
  9. )
  10. // OfficialAccount 代公众号实现业务
  11. type OfficialAccount struct {
  12. // 授权的公众号的 appID
  13. appID string
  14. *officialaccount.OfficialAccount
  15. }
  16. // NewOfficialAccount 实例化
  17. // appID :为授权方公众号 APPID,非开放平台第三方平台 APPID
  18. func NewOfficialAccount(opCtx *opContext.Context, appID string) *OfficialAccount {
  19. officialAccount := officialaccount.NewOfficialAccount(&offConfig.Config{
  20. AppID: opCtx.AppID,
  21. EncodingAESKey: opCtx.EncodingAESKey,
  22. Token: opCtx.Token,
  23. Cache: opCtx.Cache,
  24. })
  25. // 设置获取 access_token 的函数
  26. officialAccount.SetAccessTokenHandle(NewDefaultAuthrAccessToken(opCtx, appID))
  27. return &OfficialAccount{appID: appID, OfficialAccount: officialAccount}
  28. }
  29. // PlatformOauth 平台代发起 oauth2 网页授权
  30. func (officialAccount *OfficialAccount) PlatformOauth() *oauth.Oauth {
  31. return oauth.NewOauth(officialAccount.GetContext())
  32. }
  33. // PlatformJs 平台代获取 js-sdk 配置
  34. func (officialAccount *OfficialAccount) PlatformJs() *js.Js {
  35. return js.NewJs(officialAccount.GetContext(), officialAccount.appID)
  36. }
  37. // DefaultAuthrAccessToken 默认获取授权 ak 的方法
  38. type DefaultAuthrAccessToken struct {
  39. opCtx *opContext.Context
  40. appID string
  41. }
  42. // NewDefaultAuthrAccessToken New
  43. func NewDefaultAuthrAccessToken(opCtx *opContext.Context, appID string) credential.AccessTokenHandle {
  44. return &DefaultAuthrAccessToken{
  45. opCtx: opCtx,
  46. appID: appID,
  47. }
  48. }
  49. // GetAccessToken 获取 ak
  50. func (ak *DefaultAuthrAccessToken) GetAccessToken() (string, error) {
  51. return ak.opCtx.GetAuthrAccessToken(ak.appID)
  52. }