Php Twitter API 1.1错误代码32,状态/使用媒体更新

Php Twitter API 1.1错误代码32,状态/使用媒体更新,php,zend-framework,twitter,Php,Zend Framework,Twitter,我收到一个错误,我还没有被认证,但我是。否则我就不能发布一条普通的Tweet(仅仅是文本),也不能使用twitterapi1.1中的所有GET函数 我所做的: 我已经编写了自己的类,它扩展了Zend_Service_Twitter(Twitter API的抽象,它提供了对API的轻松访问)。我扩展了它以实现更多的API端点。e、 g.“状态/使用媒体更新”。这些函数的功能与其他函数类似(首先是init(),设置参数,最后调用post函数)。我已将Zend_Http_客户端中的EncType设置为

我收到一个错误,我还没有被认证,但我是。否则我就不能发布一条普通的Tweet(仅仅是文本),也不能使用twitterapi1.1中的所有GET函数

我所做的:

我已经编写了自己的类,它扩展了Zend_Service_Twitter(Twitter API的抽象,它提供了对API的轻松访问)。我扩展了它以实现更多的API端点。e、 g.“状态/使用媒体更新”。这些函数的功能与其他函数类似(首先是init(),设置参数,最后调用post函数)。我已将Zend_Http_客户端中的EncType设置为API中记录的“多部分/表单数据” . GET请求工作正常,GET account/verify_凭据也工作正常。但POST出现以下错误:

ErrorMessage:无法验证您的身份

错误代码:32

使用

Zend 1.12.5

PHP 5.3.14


请求示例:

POST /1.1/statuses/update_with_media.json HTTP/1.1
Host: api.twitter.com
Connection: close
Accept-encoding: gzip, deflate
User-Agent: Zend_Http_Client
Cookie:twid=u%3D1725343788%7CY611pVKbM7CH6i%2Br1Ni%2BkeuSXfU%3D;_twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCGmjH4tGAToMY3NyZl9pZCIlMGFlNzY5ZDVh%250AMGQ3OThjNGU5YzE1ZjA3YTZmN2I4ZjM6B2lkIiU4ZWJkNTRhOTNhNjhiMGIz%250ANzZjMzYxMTEyZWU3Y2E2Yg%253D%253D--a632ea1411849916ca5399f9654a241b0a70a17f;guest_id=v1%3A140249344476018229;lang=de;
Accept-Charset: ISO-8859-1,utf-8
Authorization: OAuth realm="",oauth_consumer_key="bBmTZTbVaziLelczV7VwqBa1U",oauth_nonce="df79065c315b5ed8d690c92a8016cece",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1402493472",oauth_version="1.0",oauth_token="1725343788-CxwJ3G6HRl0POkrqz6dl6HZImgFdeSzNucyqNkI",oauth_signature="z%2BuRj%2FEyWbo4ym12uYoQdOob%2Bmc%3D"
Content-Type: multipart/form-data; boundary=---ZENDHTTPCLIENT-6c7c5ce101c5dcf5f666f17e1a10486b
Content-Length: 71108

-----ZENDHTTPCLIENT-6c7c5ce101c5dcf5f666f17e1a10486b
Content-Disposition: form-data; name="status"

sorjghkl sdaghl
-----ZENDHTTPCLIENT-6c7c5ce101c5dcf5f666f17e1a10486b
Content-Disposition: form-data; name="media[]"
..... here is the binary picture (access with the function file_get_contents(realpath($src)))...
好的,我解决了我的问题

问题是Zend_Oauth_客户端在将所有参数设置到Http客户端之后准备Oauth头。所以oauth_签名是根据这些参数生成的。。。这似乎适用于所有其他操作,但不适用于上传图片。因此,我所做的是覆盖zend中的一些代码以获得以下行为:

一个新的客户机,它扩展了Zend_OAuth_客户机,我在其中覆盖了请求方法..与zends方法类似,但没有函数调用prepareOauth()。请小心调用parent::request(),因为现在必须调用祖父母的request方法


在此之后,我在Zend_Service_Twitter的扩展中创建了自己的方法,并在其中覆盖了post()-方法。在这里,我给出了调用方法prepareOauth()的时间顺序,检查一下这些常见的陷阱;但是我看没什么问题。我的照片的最大文件大小是70.826字节,所以没问题。每次状态更新的最大媒体数是1。用户有一个单独的、已发布的每日媒体上载限制,该限制独立于其未发布的每日状态更新限制。。。我今天或昨天都没有在推特上发过任何照片。。。图片为.jpg,带有原始二进制数据中的函数文件_getcontents