1
oauth2を使用してサードパーティのAPIにアクセスしています。私はアクセストークンを手に入れることができますが、リクエストヘッダーにベアラトークンを渡してAPIを呼び出そうとすると、401(Unauthorized)エラーが出ます。それは、私がPOSTMAN経由で(ヘッダーを(許可:ベアラー)として渡すことによってそれをしようとするとうまくいくが)。しかし、それを使用して動作しません。GolangのGETリクエストのヘッダにベアラトークンを渡すことができません
ここにコードサンプルがあります。
url := "http://api.kounta.com/v1/companies/me.json"
var bearer = "Bearer " + <ACCESS TOKEN HERE>
req, err := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", bearer)
client := urlfetch.Client(context)
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
writer.Write([]byte(body)) // Gives 401 Unauthorized error, though same works using POSTMAN
ヘッダを 'Add()'するのではなく 'Set()'しようとしましたか? ['Add()'](https://golang.org/pkg/net/http/#Header.Add)は既存のヘッダーに値を付加しますが、['Set()'](https://golang.org /pkg/net/http/#Header.Set)は、既存のヘッダーを上書きします。また、RFCのヘッダーフィールドには大文字と小文字は区別されませんが、一部の言語(PHPなど)はそのことを知らず、 'Authorization'を探しています... – Havelock
@Havelock:go textprotoパッケージは、それら。 – JimB
@TahirRauf:ヘッダーを見て、送信方法を確認しましたか? – JimB