Twitter API -> updating profile bg image with php

后端 未结 4 1150
故里飘歌
故里飘歌 2021-01-01 07:03

So far I have been trying to update the twitter profile bg image thr the twitter api with php... and without success

Many examples on the web, including this one:

相关标签:
4条回答
  • 2021-01-01 07:46

    This is what works for me (debug stuff left in):

    $url      = 'http://twitter.com/account/update_profile_background_image.xml';
    $uname    = 'myuname';
    $pword    = 'mypword';
    $img_path = '/path/to/myimage.jpg';
    $userpwd  = $uname . ':' . $pword;
    $img_post = array('image' => '@' . $img_path . ';type=image/jpeg',
                      'tile'  => 'true');
    
    $opts = array(CURLOPT_URL => $url,
                  CURLOPT_FOLLOWLOCATION => true,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_HEADER => true,
                  CURLOPT_POST => true,
                  CURLOPT_POSTFIELDS => $img_post,
                  CURLOPT_HTTPAUTH => CURLAUTH_ANY,
                  CURLOPT_USERPWD => $userpwd,
                  CURLOPT_HTTPHEADER => array('Expect:'),
                  CURLINFO_HEADER_OUT => true);
    
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $response = curl_exec($ch);
    $err      = curl_error($ch);
    $info     = curl_getinfo($ch);
    curl_close($ch);
    
    echo '<pre>';
    echo $err . '<br />';
    echo '----------------' . '<br />';
    print_r($info);
    echo '----------------' . '<br />';
    echo htmlspecialchars($response) . '<br />';
    echo '</pre>';
    
    0 讨论(0)
  • 2021-01-01 07:58

    Have you confirmed that the image you expect is present and being sent (i.e. echo out the base64 encoded data for verification)? Is it GIF/PNG/JPG and under the 800 kilobyte limit set by the API?

    0 讨论(0)
  • 2021-01-01 07:58

    I think you're using the CURLOPT_POSTFIELDS method wrong. You need to put and @ sign in front of the full path to the file according to the documentation for curl PHP. You are not supposed to output the whole file contents.

    The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like 'para1=val1&para2=val2&...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.

    This is an example from the documentation.

    <?php
    /* http://localhost/upload.php:
    print_r($_POST);
    print_r($_FILES);
    */
    
    $ch = curl_init();
    
    $data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
    
    curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    curl_exec($ch);
    ?>
    

    I hope this helps.

    0 讨论(0)
  • 2021-01-01 08:04

    Right now no one can actualy update the profile background image nor the profile image. Twitter is working to fix that issue till then there is no fix.

    0 讨论(0)
提交回复
热议问题