MCPcopy Index your code
hub / github.com/TruthHun/BookStack / GetQQAccessToken

Function GetQQAccessToken

oauth/qq.go:33–62  ·  view source on GitHub ↗

获取accessToken

(code string)

Source from the content-addressed store, hash-verified

31
32//获取accessToken
33func GetQQAccessToken(code string) (token QQAccessToken, err error) {
34 var resp string
35 Api := beego.AppConfig.String("oauth::qqAccesstoken")
36 ClientId := beego.AppConfig.String("oauth::qqClientId")
37 ClientSecret := beego.AppConfig.String("oauth::qqClientSecret")
38 Callback := beego.AppConfig.String("oauth::qqCallback")
39 api := fmt.Sprintf(Api+"?grant_type=%v&code=%v&client_id=%v&redirect_uri=%v&client_secret=%v",
40 "authorization_code", code, ClientId, Callback, ClientSecret,
41 )
42 req := httplib.Get(api)
43 if strings.HasPrefix(api, "https") {
44 req.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
45 }
46 //返回来的内容是这种形式的:access_token=E1B30B5CC5C7FED0B23AF715B773FA88&expires_in=7776000&refresh_token=0AD5E0F10D314FCD4E1C6410F76CFEF2,感觉好奇葩,居然不是json
47 if resp, err = req.String(); err == nil {
48 if debug {
49 beego.Debug("获取QQ登录的access_token", resp, api)
50 }
51 if slice := strings.Split(resp, "&"); len(slice) > 0 {
52 for _, item := range slice {
53 if strings.HasPrefix(item, "access_token=") {
54 token.AccessToken = strings.TrimPrefix(item, "access_token=")
55 return
56 }
57 }
58 }
59 err = errors.New("获取授权失败,请使用QQ重新获取授权登录")
60 }
61 return
62}
63
64//获取OpenId
65func GetQQOpenId(token QQAccessToken) (openid string, err error) {

Callers 1

OauthMethod · 0.92

Calls

no outgoing calls

Tested by

no test coverage detected