我正在使用Twitter API for OAuth。
我已经使用GET使请求令牌操作无任何问题。
然而,当我使用POST执行完全相同的操作时,它会给出错误“无法验证oauth签名”。
以下是我使用的各种卷曲选项:
curl_setopt($ch, CURLOPT_URL, ''.$url_post_str.'');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vars_arr);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
你能帮忙吗?
感谢。
答案 0 :(得分:1)
我稍后想出来了。
事实证明,因为我在帖子字段中使用了一个数组,即
curl_setopt($ch, CURLOPT_POSTFIELDS, **$post_vars_arr**);
表单内容类型是multipart / form-data,Twitter OAuth API不支持。
所以我不得不将这个数组内爆到一个查询字符串并将它传递给相同的curl_setopt,即
curl_setopt($ch, CURLOPT_POSTFIELDS, **$post_vars_str**);
根据我的理解,当您使用查询字符串而不是数组时,表单内容类型将为 application / x-www-form-urlencoded (Twitter API支持)而不是 multipart / form-data 。
这就是我的工作方式。我希望它可以帮助别人。
答案 1 :(得分:0)