【问题标题】:Twitter API Issue: OAuth Request Token using GET works, POST failsTwitter API 问题:使用 GET 的 OAuth 请求令牌有效,POST 失败
【发布时间】:2010-09-25 22:29:21
【问题描述】:

我正在使用 Twitter API 进行 OAuth。

我已经使用 GET 让请求令牌操作正常工作。

但是,当我使用 POST 执行完全相同的操作时,它会给出错误“无法验证 oauth 签名”。

以下是我正在使用的各种 curl 选项:

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:'));

你能帮忙吗?

谢谢。

【问题讨论】:

    标签: twitter oauth


    【解决方案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

    这就是我的工作方式。我希望它可以帮助别人。

    【讨论】:

    • 我正在使用 c#。刚刚从 twitter API 的 V1 迁移到 V1.1,我必须添加“Content-Type:application/x-www-form-urlencoded; charset=UTF-8”标头才能让 POST 工作。
    【解决方案2】:
    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2011-03-18
    • 2014-10-08
    • 2019-09-16
    相关资源
    最近更新 更多