与golang的twitter oauth

时间:2018-05-07 20:17:32

标签: go twitter-oauth

我正在尝试在Go中使用此代码发出此请求“oauth / request_token”:

// GET PARAMS TO REQUEST
t := time.Now().UTC()
values := make(url.Values)
values.Add("oauth_nonce", auth.ANonce)
values.Add("oauth_callback", auth.Path) //http://localhost:8080/oauth
values.Add("oauth_signature_method", "HMAC-SHA1")
values.Add("oauth_timestamp", t.String())
values.Add("oauth_consumer_key", auth.ClientID)

// GET SIGNATURE
baseString := fmt.Sprintf("POST&%s&%s", auth.Path, values.Encode())
key := fmt.Sprintf("%s&", auth.SecretID)

// GENERATE HASH
mac := hmac.New(sha1.New, []byte(key))
mac.Write([]byte(baseString))
signature := base64.URLEncoding.EncodeToString(mac.Sum(nil))

// MAKE THE REQUEST
values.Add("oauth_version", "1.0")
values.Add("oauth_signature", signature)
client := urlfetch.Client(ctx)
req, err := http.NewRequest("POST", auth.RequestToken, nil)
if err != nil {
    return fmt.Errorf("getOAuthToken Request Error: %v", err)
}
// SET HEADER
req.Header.Set("Authorization", fmt.Sprintf("OAuth oauth_nonce=\"%s\", oauth_callback=\"%s\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"%s\", oauth_consumer_key=\"%s\", oauth_signature=\"%s\", oauth_version=\"1.0\"", auth.ANonce, auth.Path, t.String(), auth.ClientID, signature))
res, err := client.Do(req)
if err != nil {
    return fmt.Errorf("getOAuthToken Client Error: %v", err)
}
defer res.Body.Close()

bs, err := ioutil.ReadAll(res.Body)
if err != nil {
    return fmt.Errorf("getOAuthToken Error: %v", err)
}

log.Printf("getOAuthToken Response: %s\n", string(bs))

问题是我总是收到此错误作为回复:“getOAuthToken响应:

  

{“errors”:[{“code”:215,“message”:“错误的身份验证数据。”}]}

我认为主要问题在于我的签名,我做错了吗?

0 个答案:

没有答案
相关问题