1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package feishu
- import (
- "bytes"
- "io"
- "net/http"
- "crazy-fox-backend-api/global"
- "crazy-fox-backend-api/model"
- jsoniter "github.com/json-iterator/go"
- "github.com/pkg/errors"
- )
- func FsUserInfo(code string, uri string) (userInfo model.TFsUserInfo, err error) {
- info := make(map[string]string)
- info["grant_type"] = "authorization_code"
- info["client_id"] = global.Config.FsLogin.AppID
- info["client_secret"] = global.Config.FsLogin.AppSecret
- info["code"] = code
- info["redirect_uri"] = global.Config.FsLogin.RedirectUri + uri
- bytesData, _ := jsoniter.Marshal(info)
- url := "https://passport.feishu.cn/suite/passport/oauth/token"
- reader := bytes.NewReader(bytesData)
- req, err := http.NewRequest("POST", url, reader)
- defer req.Body.Close()
- if err != nil {
- err = errors.WithStack(err)
- return
- }
- req.Header.Set("Content-Type", "application/json;charset=UTF-8")
- client := http.Client{}
- resp, err := client.Do(req)
- if err != nil {
- err = errors.WithStack(err)
- return
- }
- defer resp.Body.Close()
- reqsBytes, err := io.ReadAll(resp.Body)
- var acReq model.AccessReq
- err = jsoniter.Unmarshal(reqsBytes, &acReq)
- if err != nil {
- err = errors.WithStack(err)
- return
- }
- return getUserInfo(acReq.AccessToken)
- }
- func getUserInfo(accessToken string) (fsUserInfo model.TFsUserInfo, err error) {
- url := "https://passport.feishu.cn/suite/passport/oauth/userinfo"
- req, err := http.NewRequest("GET", url, nil)
- client := http.Client{}
- req.Header.Set("Authorization", "Bearer "+accessToken)
- req.Header.Set("Content-Type", "application/json;charset=UTF-8")
- resp, err := client.Do(req)
- if err != nil {
- err = errors.WithStack(err)
- return
- }
- defer resp.Body.Close()
- reqsBytes, err := io.ReadAll(resp.Body)
- if err != nil {
- err = errors.WithStack(err)
- return
- }
- if err = jsoniter.Unmarshal(reqsBytes, &fsUserInfo.FsUserBaseInfo); err != nil {
- return fsUserInfo, errors.WithStack(err)
- }
- return fsUserInfo, err
- }
|