代码之家  ›  专栏  ›  技术社区  ›  sjobe

使用OAuth更新twitter配置文件图像

  •  1
  • sjobe  · 技术社区  · 14 年前

    this library ,现在除了更新个人资料图片外,其他一切都正常了。

    我读到一些关于 twitter OAuth having problems with multipart data 但那是很久以前的事了 the plugin is supposed to have dealt with that issue .

    使用curl代码进行常规身份验证

    $url      = 'http://api.twitter.com/1/account/update_profile_image.xml';
      $uname    = $_POST['username'];
      $pword    = $_POST['password'];
      $img_path = 'xxx';
    
      $userpwd  = $uname . ':' . $pword;
      $img_post = array('image' => '@' . $img_path . ';type=image/jpeg',
                'tile'  => 'true');
      $format = 'xml'; //alternative: json
      $message = 'Test update with a random num'.rand();
    
      $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);
    

    include 'EpiCurl.php';
    include 'EpiOAuth.php';
    include 'EpiTwitter.php';
    include 'secret.php';
    
    $twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
    
    $twitterObj->setToken($_GET['oauth_token']);
    $token = $twitterObj->getAccessToken();
    $twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
    
    try{
      $img_path = 'xxx';
      //$twitterObj->post_accountUpdate_profile_image(array('@image' => "@".$img_path));    
    
       $twitterObj->post('/account/update_profile_image.json', array('@image' => "@".$img_path));
    
       $twitterObj->post_statusesUpdate(array('status' => 'This is my new status:'.rand())); //This works
       $twitterInfo= $twitterObj->get_accountVerify_credentials();  
       echo $twitterInfo->responseText;
    }catch(Exception $e){
        echo $e->getMessage();
      }
    

    我想弄清楚这件事已经有一段时间了,任何帮助都将不胜感激。我一点也不喜欢你 这个图书馆

    1 回复  |  直到 14 年前
        1
  •  1
  •   sjobe    14 年前

    我使用的图书馆版本已经过时了。更新后,我不得不处理一些其他问题,包括由于错误的服务器时间导致的401错误,现在一切正常。打印$response->responseText帮助很大。