PayPal OAuth:400指定主机后出错

时间:2013-08-25 13:22:10

标签: paypal go paypal-sandbox

我在golang做这个,我整个晚上都试图让它上班。我最近的沮丧是,尽管我已经将大量标题放入我的请求中,但我收到了400错误。

 29     req.SetBasicAuth(app.id, app.secret)
 30     req.Header.Set("Host", "www.sandbox.paypal.com")
 31     req.Header.Set("Accept", "application/json")
 32     req.Header.Set("Accept-Language", "en_US")
 33     req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
 34     req.Header.Set("Connection", "close")

我已经设置了auth,并且我可以考虑添加每个标头。我仔细阅读了文档并尝试了它,看它是否也适用。下面是我通过帖子请求传递给身体的信息

`{"grant_type": "client_credentials"}`

 42     req, err := http.NewRequest(
 43         "POST", 
 44         app.Endpoint + oauthEndpoint,
 45         strings.NewReader(`{"grant_type": "client_credentials"}`),
 46     )

如果您需要更多代码,请告诉我。但我不确定它会带来多少好处。我想让这篇文章尽可能一般。

修改

所以看起来尽管事实上我手动指定了有效负载中的grant_type,但它失败了,因为grant_type未被识别

{"error":"invalid_request","error_description":"grant_type is a required parameter"}

2 个答案:

答案 0 :(得分:2)

问题是我的读者对象,应该是

strings.NewReader("grant_type=client_identifier")

答案 1 :(得分:-1)

http://golang.org/pkg/net/http/#Header.Set

Header.Set()不会添加新标头。你想要Header.Add()。请参阅上面的文档链接。