添加github第三方请求数据通过国外中继请求
This commit is contained in:
parent
fef039ef8d
commit
e64aa76456
|
|
@ -162,3 +162,9 @@ type OutlineServerResp struct {
|
||||||
Request OnlineServerReq `json:"request" form:"request"` // 请求
|
Request OnlineServerReq `json:"request" form:"request"` // 请求
|
||||||
Response OnlineServerRespData `json:"response" form:"response"` // 响应
|
Response OnlineServerRespData `json:"response" form:"response"` // 响应
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type OutlineServerReqResp struct {
|
||||||
|
Code int `json:"code"` // 响应码
|
||||||
|
Message string `json:"message"` // 响应信息
|
||||||
|
Data OutlineServerResp `json:"data"` // 响应数据
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,57 @@ func ExchangeCodeForAccessToken(clientID, clientSecret, code, redirectURI string
|
||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExchangeCodeForAccessTokenGithub(clientID, clientSecret, code, redirectURI string) (proto.GitHubOAuthResponse, error) {
|
||||||
|
request := proto.GitHubOAuthRequest{
|
||||||
|
ClientID: clientID,
|
||||||
|
ClientSecret: clientSecret,
|
||||||
|
Code: code,
|
||||||
|
RedirectURI: redirectURI,
|
||||||
|
}
|
||||||
|
var githubOAuthResponse proto.GitHubOAuthResponse
|
||||||
|
|
||||||
|
var onlineReq proto.OnlineServerReq
|
||||||
|
onlineReq.Type = "post"
|
||||||
|
onlineReq.Url = "https://github.com/login/oauth/access_token"
|
||||||
|
onlineReq.Data = request
|
||||||
|
|
||||||
|
header := make([]proto.OutlineServerReqData, 0)
|
||||||
|
header = append(header, proto.OutlineServerReqData{
|
||||||
|
Key: "Content-Type",
|
||||||
|
Value: "application/json",
|
||||||
|
})
|
||||||
|
header = append(header, proto.OutlineServerReqData{
|
||||||
|
Key: "Accept",
|
||||||
|
Value: "application/json",
|
||||||
|
})
|
||||||
|
superTokens := GetRedisSetMembers("super_permission_tokens")
|
||||||
|
header = append(header, proto.OutlineServerReqData{
|
||||||
|
Key: "token",
|
||||||
|
Value: superTokens[0],
|
||||||
|
})
|
||||||
|
onlineReq.Header = header
|
||||||
|
onlineReqBytes, _ := json.Marshal(onlineReq)
|
||||||
|
headers := map[string]string{
|
||||||
|
"token": superTokens[0],
|
||||||
|
"super_id": "1",
|
||||||
|
}
|
||||||
|
|
||||||
|
err, respBytes := DoPostRequestJSON("https://vis.ljsea.top/tool/online_server_request?super_id=1", onlineReqBytes, headers)
|
||||||
|
if err != nil {
|
||||||
|
return githubOAuthResponse, err
|
||||||
|
}
|
||||||
|
var onlineResp proto.OutlineServerReqResp
|
||||||
|
err = json.Unmarshal(respBytes, &onlineResp)
|
||||||
|
if err != nil {
|
||||||
|
return githubOAuthResponse, err
|
||||||
|
}
|
||||||
|
err = json.Unmarshal([]byte(onlineResp.Data.Response.Response), &githubOAuthResponse)
|
||||||
|
if err != nil {
|
||||||
|
return githubOAuthResponse, err
|
||||||
|
}
|
||||||
|
return githubOAuthResponse, nil
|
||||||
|
}
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
func GetGitHubUserInfo(accessToken string) (proto.GitHubUserInfo, error) {
|
func GetGitHubUserInfo(accessToken string) (proto.GitHubUserInfo, error) {
|
||||||
|
|
||||||
|
|
@ -122,6 +173,42 @@ func GetGitHubUserInfo(accessToken string) (proto.GitHubUserInfo, error) {
|
||||||
}
|
}
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
func GetGitHubUserInfoV2(accessToken string) (proto.GitHubUserInfo, error) {
|
||||||
|
url := "https://api.github.com/user"
|
||||||
|
var onlineReq proto.OnlineServerReq
|
||||||
|
onlineReq.Type = "get"
|
||||||
|
onlineReq.Url = url
|
||||||
|
|
||||||
|
header := make([]proto.OutlineServerReqData, 0)
|
||||||
|
header = append(header, proto.OutlineServerReqData{
|
||||||
|
Key: "Authorization",
|
||||||
|
Value: "Bearer " + accessToken,
|
||||||
|
})
|
||||||
|
onlineReq.Header = header
|
||||||
|
superTokens := GetRedisSetMembers("super_permission_tokens")
|
||||||
|
onlineReqBytes, _ := json.Marshal(onlineReq)
|
||||||
|
headers := map[string]string{
|
||||||
|
"token": superTokens[0],
|
||||||
|
"super_id": "1",
|
||||||
|
}
|
||||||
|
|
||||||
|
err, respBytes := DoPostRequestJSON("https://vis.ljsea.top/tool/online_server_request?super_id=1", onlineReqBytes, headers)
|
||||||
|
var onlineResp proto.OutlineServerReqResp
|
||||||
|
var resp proto.GitHubUserInfo
|
||||||
|
err = json.Unmarshal(respBytes, &onlineResp)
|
||||||
|
if err != nil {
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
err = json.Unmarshal([]byte(onlineResp.Data.Response.Response), &resp)
|
||||||
|
//err, data := DoGetRequest(url, headers)
|
||||||
|
if err != nil {
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
if resp.UserID == 0 {
|
||||||
|
return resp, errors.New("获取用户信息失败,请检查access_token是否正确")
|
||||||
|
}
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
// 谷歌登录授权
|
// 谷歌登录授权
|
||||||
const (
|
const (
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue