【问题标题】:Twitter api 1.1 update_with_mediaTwitter api 1.1 update_with_media
【发布时间】:2014-02-27 18:49:42
【问题描述】:

我正在更改我的 php 代码以与新 API 兼容,但我被 update_with_media 卡住了。 这是我的代码:

$image = constant('PATH_UPLOAD').$db_data['post_image'];
$connection = new TwitterOAuth(constant('CONSUMER_KEY'), constant('CONSUMER_SECRET'), $db_data['tw_oauth_token'], $db_data['tw_oauth_secret']);          
$content = $connection->OAuthRequest('https://api.twitter.com/1.1/account/verify_credentials.json', 'GET', array());
$twitterInfo = json_decode($content);                      
$resp_tw = $connection->OAuthRequest('https://api.twitter.com/1.1/statuses/update_with_media.json', 'POST', 
             array(
               'status'   => html_entity_decode($db_data['post_text'],ENT_QUOTES,'UTF-8'),              
                 'media[]'  => "@{$image}"
             )         
           );                          

然后它返回

{"errors":[{"code":189,"message":"Error creating status"}]}

可能是什么问题/我做错了什么?

【问题讨论】:

    标签: php twitter


    【解决方案1】:

    你可以这样试试:

    $tmhOAuth = new tmhOAuth(array(
      'consumer_key' => 'abc',
      'consumer_secret' => 'abc',
      'user_token' => 'abc',
      'user_secret' => 'abc',
    ));
    
    $response = $tmhOAuth->request('POST', $tmhOAuth->url('1.1/statuses/update_with_media'),
    array(
           'status' => $message,
           'media[]'  => file_get_contents($image)
    ));
    if ($response != 200) {
        //Do something if the request was unsuccessful
    }
    

    还有我的代码测试https://twitter.com/wallapps/status/357137553691906048

    【讨论】:

    • 您好,您使用的是哪个版本的 thmOAuth?几天来,我一直在努力处理自动推文,甚至连这段代码都无法正常工作。
    【解决方案2】:

    虽然这个问题是几个月前的问题,但我想我会回答它,因为我花了几个小时来制作 update_with_media 并且无法在网上找到令人满意的答案。

    遗憾的是,Twitter API 错误消息并不是那么具体。我能够找出以下推特错误:

    1. “错误无法验证您” - 可能意味着您的 OAuth 签名基字符串不正确

    2. “错误不正确或缺少 uri” - 可能意味着您没有严格遵循 Twitter 在请求正文中所期望的格式。可能就像在请求正文中缺少 \n 一样简单

    3. “错误创建状态 - 可能意味着您的状态文本在不应该出现在多部分/表单数据请求的请求正文中时被编码
    4. “错误内部错误” - 这表明没有任何用处。这可能意味着您有一些数据在 twitter 预期的情况下未编码,反之亦然。这也可能意味着您没有在请求正文中包含编码类型

    要使 update_with_media 正常工作,这些提示可能会有所帮助:

    1. 请求的内容类型应为 multipart/form-data

    2. 请求正文应包含 twitter 期望的两个元素 media[] 和正确格式的状态 (RFC 2388)

    3. 此外,Twitter 服务器在请求正文的每个部分之后都需要 \r\n (CR LF)。跳过这会导致 Twitter 返回错误
    4. media[] 数据应该是 base64 编码,并且请求正文中的 content-disposition 部分应该有 Content-Transfer-Encoding
    5. OAuth 签名基本字符串应为:(请参阅 OAuth 1.0A 签名规范)请求对象的 Auth 标头中的所有 oauth_ 参数(名称=值),按字母顺序排列,用 & 分隔并编码

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 2012-08-19
      • 2014-08-06
      • 2013-12-07
      相关资源
      最近更新 更多