gome_token.go 1.2 KB
package gome

import (
	"context"
	"github.com/gogf/gf/encoding/gjson"
)

type tokenGome struct {
}

var Token = tokenGome{}

type GetTokenReq struct {
	GrantType string `json:"grant_type"`
}

type TokenCommonRes struct {
	*CommonRes
	Data struct {
		AppKey           string `json:"appKey"`
		AccessToken      string `json:"access_token"`
		RefreshToken     string `json:"refresh_token"`
		ExpiresInSeconds int64  `json:"expiresInSeconds"`
		CreateTime       string `json:"createTime"`
	} `json:"data"`
}

type RefreshTokenReq struct {
	GrantType    string `json:"grant_type"`
	RefreshToken string `json:"refresh_token"`
}

func (tokenGome) Get(ctx context.Context) (res *TokenCommonRes, err error) {
	method := "token.create"
	req := &GetTokenReq{GrantType: "authorization_secret"}
	result, err := server.post(ctx, method, req)
	if err != nil {
		return
	}
	_ = gjson.New(result).Scan(&res)
	return
}

func (tokenGome) Refresh(ctx context.Context, refreshToken string) (res *TokenCommonRes, err error) {
	method := "token.refresh"
	req := &RefreshTokenReq{
		GrantType:    "authorization_code",
		RefreshToken: refreshToken,
	}
	result, err := server.post(ctx, method, req)
	if err != nil {
		return
	}
	_ = gjson.New(result).Scan(&res)
	return
}