2012-02-27 1 views
0

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

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

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

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

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

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

не работает, а я получаю

Fatal error: Uncaught exception 'OAuthException' with message 'Invalid auth/bad request (got a 500, expected HTTP/1.1 20X or a redirect)'

+0

Брус кодировать данные с этим: http://php.net/manual/en/function.base64-encode.php – Botonomous

+0

Извините, если это выходит как глупо, но не могли бы вы дать мне пример? Должен ли я кодировать содержимое файла изображения, путь или весь параметр ...? – treznik

ответ

0

В случае, если кто-либо заинтересован, я в конечном итоге использовал 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

Вы можете закодировать изображение как это:

<?php 

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

$im_Data = base64_encode($im); 
?> 

Тогда вы должны быть в состоянии добавить $ img_Data в вызов апи ,

+0

В нем говорится: «Предупреждение: base64_encode() ожидает, что параметр 1 будет строкой, указанным ресурсом». – treznik

+0

Затем установите параметр в строку, которая содержит местоположение изображения. Выньте imagecreatefromjpeg. – Botonomous

0

Я еще не знаю, есть ли открытая проблема, но ключ «изображения» должен начинаться с «@».

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