【发布时间】:2011-12-29 21:08:04
【问题描述】:
我正在使用meltingice's API for TwitPic,当我尝试上传图片时收到 401 错误消息“无法验证您(推特拒绝标题)”。
我的标头(从 HTTP Request2 对象中检索)是:
Array
(
[user-agent] => HTTP_Request2/2.0.0 (http://pear.php.net/package/http_request2) PHP/5.2.17
[x-verify-credentials-authorization] => OAuth realm="http://api.twitter.com/", oauth_consumer_key="****************", oauth_signature_method="HMAC-SHA1", oauth_token="#########-******************", oauth_timestamp="1325192643", oauth_nonce="***********", oauth_version="1.0", oauth_signature="****************%3D"
[x-auth-service-provider] => https://api.twitter.com/1/account/verify_credentials.json
[content-type] => multipart/form-data
)
我确定 verify_credentials 签名使用的是 GET,我看不到任何其他问题。
我做错了什么?
谢谢:)
编辑:这是我的源代码。
$venue = $this->Venue->findById($venueId);
$twitterData = json_decode($venue['Venue']['twitter_data']);
$token = $twitterData->token;
$secret = $twitterData->secret;
$this->Twitter->loginTwitterUser($token, $secret);
require_once(WWW_ROOT.'twitpic/TwitPic.php');
$twitpic = new TwitPic('**********', '*******', '*********', $token, $secret);
$result['result'] = $twitpic->upload(array('media'=> '/home/todays/public_html/tsm/app/webroot/files/uploads/LOGOA7V1_10.png', 'message'=> 'test'));
而且我确信令牌、秘密和应用程序凭据是正确的,因为它们在我的 Twitter API 中运行没有任何问题。我还仔细检查了 Twitpic API 密钥。
【问题讨论】:
-
尝试用 try 和 catch 包围您的代码,看看它是否会引发异常。此外,您应该启用错误以查看是否有任何您看不到的错误。还有:你为什么还要登录推特?当你使用 TwitPic 时,这真的有必要吗?
-
尝试获取发送到 TwitPic 的实际 HTTP 请求。有几种方法可以做到这一点:netcat、fiddler、wireshark...
-
@RunarJørgensen 抛出自定义异常,我进入抛出异常的地方接收头数组。
-
@SamuelEdwinWard 这些标头是请求中唯一的东西,因为我查看了插件的代码来检索它们。我无法使用这些工具中的任何一个,因为它托管在基本的网络主机上。
-
@nickbadal 你可以在你的工作站上运行一个 netcat 监听器,并在你的代码中临时更改服务器以指向那里而不是 twitpic。
标签: php api twitter http-headers twitpic