OP
删除申请成功的 app
编辑已经申请通过的 app
@Jimmy 今天调试时有个疑惑需要解答下,咱这个授权成功时返回的状态码好像是 201,并非常见的 200
下面是我写的代码,刚开始写的判断条件是 200,一直在报错,这是修改后的代码.
// exchangeToken 用 code 换 access_token func (s *OAuthService) exchangeToken(p *entity.OAuthProvider, code, redirectURI string) (*tokenResponse, error) { params := url.Values{} params.Set("grant_type", "authorization_code") params.Set("code", code) params.Set("redirect_uri", redirectURI) params.Set("client_id", p.ClientID) params.Set("client_secret", p.ClientSecret) resp, err := http.PostForm(p.TokenURL, params) if err != nil { global.Logger.WithFields(map[string]interface{}{ "provider": p.Name, }).Errorf("oauth: 请求 token 接口失败: %v", err) return nil, err } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { return nil, err } if resp.StatusCode < 200 || resp.StatusCode >= 300 { global.Logger.WithFields(map[string]interface{}{ "provider": p.Name, "status": resp.StatusCode, "body": string(body), }).Errorf("oauth: token 接口返回异常") return nil, fmt.Errorf("token 接口返回 %d", resp.StatusCode) } // 支持 wrapped 格式:{"c":0,"m":"...","d":{...}} if p.ResponseFormat == "wrapped" { var wrapped struct { C int `json:"c"` M string `json:"m"` D json.RawMessage `json:"d"` } if err := json.Unmarshal(body, &wrapped); err != nil { global.Logger.WithFields(map[string]interface{}{ "provider": p.Name, }).Errorf("oauth: 解析 wrapped token 响应失败: %v", err) return nil, err } if wrapped.C != 0 { global.Logger.WithFields(map[string]interface{}{ "provider": p.Name, "code": wrapped.C, "message": wrapped.M, }).Errorf("oauth: token 接口业务错误") return nil, fmt.Errorf("token 接口业务错误: code=%d", wrapped.C) } body = wrapped.D } var result tokenResponse if err := json.Unmarshal(body, &result); err != nil { global.Logger.WithFields(map[string]interface{}{ "provider": p.Name, }).Errorf("oauth: 解析 token 响应失败: %v", err) return nil, err } return &result, nil }
用户角度:现在已授权的可以撤销。
开发者角度的话,是需要删除已授权的应用和编辑回调地址吗?