2012-02-27 125 views
0

我一直在努力爲Twitter找到最好的OAuth PHP庫幾個小時。馬特哈里斯的TmhOAuth似乎有點臃腫(沒有冒犯性),並在我「安裝」它之後開始拍攝PHP警告和嚴格標準通知。Twitter API使用PHP OAuth上傳

我只想通過API更新我的bg照片。只是我的,所以不需要任何登錄和回調,所有的密鑰都是硬編碼的。

在我發現了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' 
); 

不行的,而不是我得到

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 2012-02-27 21:50:21

+0

很抱歉,如果這個出來的愚蠢,但你可以給我一個例子嗎?我應該編碼圖像文件的內容,路徑還是整個參數......? – treznik 2012-02-27 21:53:23

回答

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加入到API調用。

+0

它說「警告:base64_encode()期望參數1是字符串,資源給出。」 – treznik 2012-02-27 22:51:48

+0

然後將該參數設置爲保存圖像位置的字符串。取出imagecreatefromjpeg。 – Botonomous 2012-02-27 22:58:23

0

我不知道這是一個尚未解決的問題,但「圖像」鍵也必須以「@」開頭。

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