gpt4 book ai didi

security - 如何使用 golang 在 squareup 支付网关中添加客户?

转载 作者:IT王子 更新时间:2023-10-29 01:43:57 26 4
gpt4 key购买 nike

我正在使用 golang 在 squareup.com 中添加客户,但它总是说授权问题 谁能告诉我我的代码中有什么问题:-

func Token(c *gin.Context) {
code := c.Query("code")
splitCode := strings.Split(code, "-")
scope := c.DefaultQuery("scope", "CUSTOMERS_WRITE")
customer := models.Customer{
GivenName: "Amelia",
FamilyName: "Earhart",
CompanyName: "fbgusbd",
Nickname: "kdfbkgjkdf",
EmailAddress: "Amelia.Earhart@example.com",
Address: models.Addresss{
AddressLine1: "500 Electric Ave",
AddressLine2: "Suite 600",
Locality: "New York",
AdministrativeDistrictLevel1: "NY",
PostalCode: "10003",
Country: "US",
},
PhoneNumber: "1-212-555-4240",
ReferenceId: "12",
Note: "a customer",
}
fmt.Println(customer)
bindData, err := json.Marshal(customer)
if err != nil {
panic(err)
}
var jsonStr = []byte(string(bindData))
url := config.APIBaseLive + "v2/customers?code=" + splitCode[1] + "&scope=" + scope

req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
req.Header.Add("Authorization", "Bearer "+splitCode[1])
req.Header.Add("Accept", "application/json")
fmt.Println("Request", req)
client := &http.Client{}
resp, err := client.Do(req)
// fmt.Println(resp, err)
if err != nil {
panic(err)
}
defer resp.Body.Close()
resp.Header.Add("Authorization", "Bearer "+splitCode[1])
resp.Header.Add("Accept", "application/json")
fmt.Println("response Status:", resp.Status)
fmt.Println("response Headers:", resp.Header)
body, _ := ioutil.ReadAll(resp.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"`
}

错误:-

 {
"errors": [
{
"category": "AUTHENTICATION_ERROR",
"code": "UNAUTHORIZED",
"detail": "This request could not be authorized."
}
]
}

在点击 https://connect.squareup.com/oauth2/authorize?client_id=your_client_id 时,它会将您定向到您添加的 url 重定向 url,其中包含具有 key 身份验证的查询字符串代码 key 。您将在仪表板中添加重定向 URL,然后通过使用此代码您将调用身份验证用户。谁能帮我解决这个问题?

谢谢。

最佳答案

查看squareup是如何实现oauth2的 https://docs.connect.squareup.com/authz/oauth/how-it-works

您的 GO 代码在该图上是 BACKEND。

https://connect.squareup.com/oauth2/authorize预计将从客户端(浏览器、 native 或移动应用程序)调用,这将导致浏览器中的某些 HTTP 重定向以询问用户凭据和其他挑战。这些凭据应由人类使用浏览器或 Web View (浏览器的 chromeless 版本)提供。

当您从 GO 发送请求时,您可能会收到重定向响应。即重定向到 HTML 页面,用户可以在其中输入凭据。

不要尝试在 GO 中实现 CLIENT,因为整个 oauth2 流程假定用户输入并且应该检测并拒绝后端代码,这应该是不可能的。

关于security - 如何使用 golang 在 squareup 支付网关中添加客户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53706669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com