我收到的错误是我未经过身份验证,但我是。否则我无法发布正常的推文(只是文本)或使用Twitter API 1.1中的所有GET函数。
我做了什么:
我编写了自己的课程扩展 Zend_Service_Twitter (Twitter API的抽象,可以轻松访问API)。我扩展它以实现API的更多端点。例如“状态/ update_with_media”。这些函数的功能类似于其他函数(首先是init(),设置参数和最后调用post-function)。我已将Zend_Http_Client中的EncType设置为'multipart / form-data',因为它在API中有记录 。 GET请求工作正常,GET account / verify_credentials也正常工作。但POST发生此错误:
ErrorMessage:无法验证您的身份
ErrorCode: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)))...
答案 0 :(得分:1)
问题是Zend_Oauth_Client在所有参数都设置为Http-Client后准备Oauth-Header。所以oauth_signature是在这些参数上生成的......这似乎对所有其他操作都是合法的,但不适用于上传图片。所以我所做的是我已经从zend覆盖了一些代码以获得这种行为:
一个新的客户端,它扩展了Zend_OAuth_Client,我已经覆盖了请求方法。与zends方法类似但没有函数调用prepareOauth()。小心调用parent :: request(),因为现在你必须调用祖父母的请求方法。
在此之后我在Zend_Service_Twitter的扩展中创建了自己的方法,其中我覆盖了post() - Method。在那里我讨论了调用方法prepareOauth()
的年代表