Golang Twitter API - update_profile_banner图像压缩错误 &



我正在尝试使用帐户/update_profile_banner更新横幅图像。在Twitter API中。在query参数中,表示图像可以以两种格式类型发送。作为base64或原始数据。

当我用base64编码我的图像时,我认为它的大小超过了最大http长度。以二进制形式发送似乎更不合逻辑,因为它比base64更长。

Post "https://api.twitter.com/1.1/account/update_profile_banner.json?banner=%2F9j%2F2wCEAA...": http2: server sent GOAWAY and closed the connection; LastStreamID=7, ErrCode=COMPRESSION_ERROR, debug=""

我使用的库是dghubble/go-twitter,但我不得不创建一个分支,因为没有方法来更新配置文件横幅。我向帐户添加了以下函数和结构。文件。

type AccountUpdateProfileBannerPhotoParams struct {
Banner string `url:"banner,omitempty"`
Width   int    `url:"width,omitempty"`
Height  int    `url:"height,omitempty"`
OffsetX int    `url:"offset_left,omitempty"`
OffsetY int    `url:"offset_top,omitempty"`
}
func (s *AccountService) UpdateProfileBannerPhoto(params *AccountUpdateProfileBannerPhotoParams) (*User, *http.Response, error) {
user := new(User)
apiError := new(APIError)
resp, err := s.sling.New().Post("update_profile_banner.json").QueryStruct(params).Receive(user, apiError)
return user, resp, relevantError(err, *apiError)
}

UpdateProfileBannerPhoto()函数返回上述错误消息。

问题解决。粗心大意!

我了解到Twitter使用media/upload方法,然后通过跟踪网络流量将media_id值发送到account/update_profile_banner方法来更新。

但这是不需要的。我用BodyForm更新了UpdateProfileBannerPhoto函数中的QueryStruct,问题解决了…

固定:

func (s *AccountService) UpdateProfileBannerPhoto(params *AccountUpdateProfileBannerPhotoParams) (*User, *http.Response, error) {
user := new(User)
apiError := new(APIError)
resp, err := s.sling.New().Post("update_profile_banner.json").BodyForm(params).Receive(user, apiError)
return user, resp, relevantError(err, *apiError)
}

相关内容

  • 没有找到相关文章

最新更新