在sqaureup应用程序Aplication_name
的oauth选项中,有一个重定向URL,它将使用QueryString代码重定向给定的URL。当我在浏览器中点击https://connect.squareup.com/oauth2/authorize?client_id=YOUR_CLIENT_ID
时,它会将我重定向到带有附加代码的oauth中的给定URL。然后,要获取access_token
,您必须向正文发出给定网址POST
的{{1}}请求
https://connect.squareup.com/oauth2/token
我也这样做,并通过方法{
"client_id": "YOUR_APPLICATION_ID",
"client_secret": "YOUR_APPLICATION_SECRET",
"code": "M-Q7k-N0Emx_3cBqwbVLTQ",
"redirect_uri": "YOUR_REDIRECT_URI"
}
通过json数据发送到此url,但这会给我错误:-
POST
我为此使用的Golang代码是:-
{
"message": "Not Authorized",
"type": "service.not_authorized"
}
模型结构:-
func Token(c *gin.Context) {
code := c.Query("code") // code be something like:-sq0cgp-wLVQt5HOLfug6xiVdmCDCf
splitCode := strings.Split(code, "-")
token := models.PostToken{
ClientID: "YOUR_APPLICATION_ID",
ClientSecret: "YOUR_APPLICATION_SECRET",
Code: splitCode[1],
RedirectUri: c.Request.Host + c.Request.URL.RequestURI(),
}
bindData, err := json.Marshal(token)
if err != nil {
panic(err)
}
var jsonStr = []byte(string(bindData))
url := "https://connect.squareup.com/oauth2/token"
req, err := http.Post(url, "application/json", bytes.NewBuffer(jsonStr))
fmt.Println(req, err)
}
答案 0 :(得分:0)
您必须做一些我提到的事情:-
ClientSecret
中,您必须使用将从应用程序仪表板-> Oauth选项获得的Oauth应用程序密钥。Code
中,您无需发送拆分代码,而只需在变量名code
中获取简单字符串代码值即可。然后您将得到想要的东西:D。