简体   繁体   English

Twitter发布并更新用户个人资料图片

[英]Twitter post and update user profile image

I'm attempting to update a user profile using the Twitter API via j7mbo's wrapper but I'm receiving the following response... 我正在尝试通过j7mbo的包装器使用Twitter API更新用户个人资料,但收到以下响应...

{"request":"/1.1/account/update_profile_image.json","error":"not recognized."} {“请求”:“ / 1.1 / account / update_profile_image.json”,“错误”:“无法识别。”}

Code being used is... 正在使用的代码是...

require_once('TwitterAPIExchange.php');

/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
    'oauth_access_token' => "***",
    'oauth_access_token_secret' => "***",
    'consumer_key' => "***",
    'consumer_secret' => "***"
);

    $url = 'https://api.twitter.com/1.1/account/update_profile_image.json';
    $requestMethod = 'POST';

    $postfields = array(
        'image' => 'data:image/jpg;base64,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',
        'include_entities' => 'false',
        'skip_status' => 'false'
    );

    $twitter = new TwitterAPIExchange($settings);
    echo $twitter->buildOauth($url, $requestMethod)
                 ->setPostfields($postfields)
                 ->performRequest();

Just post the raw base-64 encoded image; 只需发布原始的base-64编码图像; no headers. 没有标题。 Twitter handles that on their end. Twitter最终解决了这一问题。 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAA...

An easy way of doing this is base64_encode(file_get_contents("./images/tw_image.png"))) 一个简单的方法是base64_encode(file_get_contents("./images/tw_image.png")))

You need convert the file to base64_encode. 您需要将文件转换为base64_encode。

function getImageProfile() {
    $path = 'yourimage.jpg'; //path of image file
    $file = file_get_contents($path);
    $data = base64_encode($file);
    return $data;
}

And send it the parameters by POST using the API https://api.twitter.com/1.1/account/update_profile_image.json 并通过POST使用API https://api.twitter.com/1.1/account/update_profile_image.json发送参数

$postfields = array('image' => $this->getImageProfile(),
                                'include_entities' => false,
                                'skip_status' => false);

$twitter = new TwitterAPIExchange($settings);

echo $twitter->buildOauth($url_api_update_profile_image, $method)
                    ->setPostfields($postfields)
                    ->performRequest();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM