在這里,我有一個函數,我在其中發送一個 POST 請求,該請求用于將客戶保存在帶有數據的正方形中,并使用身份驗證設置標頭,variable_name.Header.Set() 但在正文響應中,它總是會給我以下錯誤:-"errors":[ {"category":"AUTHENTICATION_ERROR", "code":"UNAUTHORIZED", "detail":"Your request did not include an `Authorization` http header with an access token. }]}但是在函數中我設置了身份驗證令牌。代碼:-func CreateCustomer(c *gin.Context) {customer := models.Customer{}bearer := strings.Split(c.Request.Header["Authorization"][0], "Bearer")// token pass in the postman.bearerToken := strings.TrimSpace(bearer[1])customerErr := json.NewDecoder(c.Request.Body).Decode(&customer)if customerErr != nil { fmt.Println(customerErr) return}fmt.Println(customer)bindData, err := json.Marshal(customer)if err != nil { panic(err)}var jsonStr = []byte(string(bindData))url :="https://connect.squareup.com/v2/customers"fmt.Println(url)req, err := http.Post(url, "application/json", bytes.NewBuffer(jsonStr))// I used this one too.// req.Header.Set("Authorization", "Bearer "+bearerToken)// req.Header.Set("Accept", "application/json")req.Header.Add("Authorization", "Bearer "+bearerToken)req.Header.Add("Accept", "application/json")fmt.Println(req.Header)if err != nil { panic(err)}defer req.Body.Close()body, _ := ioutil.ReadAll(req.Body)fmt.Println("response Body:", string(body))}type Customer struct { GivenName string `json:"given_name" bson:"given_name"` FamilyName string `json:"family_name" bson:"family_name"` CompanyName string `json:"company_name" bson:"company_name"` Nickname string `json:"nickname" bson:"nickname"` EmailAddress string `json:"email_address" bson:"email_address"` Address Addresss `json:"address" bson:"address"` PhoneNumber string `json:"phone_number" bson:"phone_number"` ReferenceId string `json:"reference_id" bson:"reference_id"` Note string `json:"note" bson:"note"`}任何人都可以告訴我我應該做什么錯誤或我在哪里進行更正以便能夠在 Squareup 中保存客戶?
2 回答

浮云間
TA貢獻1829條經驗 獲得超4個贊
您的代碼發送 POST 請求,并在處理請求后將標頭添加到響應結構中:
響應,錯誤:= http.Post(url, "application/json", bytes.NewBuffer(jsonStr))
您應該先設置標頭,然后再發送請求:
// create request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
if err != nil {
panic(err)
}
// set headers
req.Header.Add("Authorization", "Bearer "+bearerToken)
req.Header.Add("Accept", "application/json")
// send request with headers
client := &http.Client{}
response, err := client.Do(req)

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
唯一提醒的是,盡量不要混淆“身份驗證”和“授權”,這是我遇到的一種障礙。不是字面上的意思,大家都懂的。然而,即使在語法中,很多材料也會交替使用這兩個詞,至少在我看來,這是不應該鼓勵的。上面的話題就是一個很好的例子:以“身份驗證”作為問題開始,然后以“授權”作為解決方案結束。
- 2 回答
- 0 關注
- 169 瀏覽
添加回答
舉報
0/150
提交
取消