Загрузка API Twitter с помощью PHP OAuth - PullRequest
0 голосов
/ 28 февраля 2012

Я часами пытался найти лучшую OAuth PHP lib для Twitter. TmhOAuth от Мэтта Харриса кажется несколько раздутым (без обид) и начал снимать предупреждения PHP Warnings и Strict Standards сразу после того, как я «установил» его.

Все, что я хочу, это обновить мою фотографию bg через API. Только мой, так что нет необходимости в каких-либо логинах и обратных вызовах, все ключи жестко запрограммированы.

В конце концов я узнал о собственной вещи PHP: http://php.net/manual/en/book.oauth.php

Выглядело круто, потому что все имеет 4 строки кода. Аут работает, и я могу протолкнуть вещи через API, я просто не могу отправить параметр изображения, хотя. Это метод: https://dev.twitter.com/docs/api/1/post/account/update_profile_background_image

Я нашел несколько примеров, в которых использовались формы загрузки, но у меня уже есть фотография, сохраненная в файле, так как я могу предоставить, цитата, base64-закодированное изображение в виде необработанных многокомпонентных данных ?

$oauth->fetch
(
    'https://api.twitter.com/1/account/update_profile_background_image.json',
    array
    (
        'image' => '@' . $img_path . ';type=image/jpeg'
    ),
    'POST'
);

Не работает, вместо этого я получаю

Неустранимая ошибка: необработанное исключение «OAuthException» с сообщением «Недопустимый запрос авторизации / неверный запрос (получено 500, ожидаемый HTTP / 1.1 20X или перенаправление)»

Ответы [ 3 ]

0 голосов
/ 10 июля 2013

Я пока не знаю, является ли это открытой проблемой, но клавиша "image" должна начинаться также с "@".

$oauth->fetch
(
    'https://api.twitter.com/1/account/update_profile_background_image.json',
    array
    (
        '@image' => '@' . $img_path . ';type=image/jpeg'
    ),
    'POST'
);
0 голосов
/ 24 августа 2013

В случае, если кто-то заинтересован, я в конце концов использовал TmhOAuth. Раздутый, но он сделал свою работу.

$image = array
(
    "@$path",
    'type=image/jpeg',
    "filename=$name"
);
$params = array
(
    'image' => implode(';', $image),
    'use' => 'true'
);

// Request

$code = $tmhOAuth->request('POST', $tmhOAuth->url
(
    '1/account/update_profile_background_image'
),
$params, true, true);
0 голосов
/ 28 февраля 2012

Вы можете кодировать изображение следующим образом:

<?php 

$im = imagecreatefromjpeg('file.jpg'); 

$im_Data = base64_encode($im); 
?>

Тогда вы сможете добавить $ img_Data в вызов API.

...