2010-06-22 37 views
7

thể trùng lặp:
Add picture at facebook event with Graph APIĐính kèm hình ảnh lên Facebook sự kiện (php sdk, nghỉ ngơi hoặc graph api)

Tôi đã cố gắng trong một vài giờ tốt bây giờ để tạo một sự kiện thông qua API Facebook với hình ảnh. Cho đến nay tôi đã có thể tạo các sự kiện mặc dù cả API đồ thị và phần còn lại không có hình ảnh nhưng không thể đính kèm bất kỳ hình ảnh nào.

Tôi tin rằng REST API là API duy nhất hỗ trợ đính kèm hình ảnh, nhưng tài liệu này khá kém và tài liệu hoặc mã php-sdk cũng không giúp được gì nhiều.

nỗ lực mới nhất của tôi là trên tại địa chỉ: http://promos.uk.glam.com/splash_test/example.php

Với mã: http://pastebin.com/8JC8RAck (lưu ý "require facebook.php" là php-sdk - http://github.com/facebook/php-sdk/)

Lưu ý dòng 93 ("if ($ uid) {"), điều này được cho là" if ($ me) {", đã hoạt động được một giờ hoặc lâu hơn, và sau đó ngừng hoạt động (không có thay đổi nào đối với mã có $ tôi), kỳ quặc.

Vì vậy, mã tạo sự kiện là dòng 96-99 và hiện tại nó tạo sự kiện không có hình ảnh, nhưng ngay sau khi tôi đưa lại mã nhận xét (dòng 98), nó không làm gì cả .

Có ai biết cách tạo sự kiện trên facebook mặc dù API có hình ảnh không? Nếu có, xin hãy giúp tôi ở đây! Tôi không có vấn đề scrapping tất cả các mã này nếu có một giải pháp, mặc dù tôi phải sử dụng PHP hoặc Javascript.

Cảm ơn tất cả

Trả lời

10

Cảm ơn mọi người vì câu trả lời của bạn, tôi đã quyết định truy cập lại để xem liệu API có đang hoạt động chính xác hay không. Nó là! Tải lên hình ảnh với Graph API hiện hoạt động.Nhờ Stan James đã mang sự chú ý của tôi để này và đưa ra mã để đăng ảnh, mà tôi thích nghi cho các sự kiện:

Setup:

//Setup the Facebook object allowing file upload 
$facebook = new Facebook(array(
    'appId' => 'xxxxxxxxxxxxxxxxxxxx', 
    'secret' => 'xxxxxxxxxxxxxxxxxxxx', 
    'cookie' => true, 
    'fileUpload' => true 
)); 

bài viết:

//Path to photo (only tested with relative path to same directory) 
$file = "end300.jpg"; 
//The event information array (timestamps are "Facebook time"...) 
$event_info = array(
    "privacy_type" => "SECRET", 
    "name" => "Event Title", 
    "host" => "Me", 
    "start_time" => 1290790800, 
    "end_time" => 1290799800, 
    "location" => "London", 
    "description" => "Event Description" 
); 
//The key part - The path to the file with the CURL syntax 
$event_info[basename($file)] = '@' . realpath($file); 
//Make the call and get back the event ID 
$result = $facebook->api('me/events','post',$event_info); 

tôi đã đặt tất cả các mã trên pastebin (http://pastebin.com/iV0JL2mL), đó là một chút lộn xộn từ gỡ lỗi của tôi và nhận được tức giận với Facebook tháng trước! Nhưng nó đã có tác dụng.

0

Bạn có thể gửi hình ảnh vào facebook như:

// variables required in this example: 
$img_path = "/home/www/test.png"; // image path 
$img_caption = "testing"; // caption 
$album_id = "12345678910"; // album id 
$facebook_uid = "555555555"; // facebook user id 
$facebok_user_access_token = "ajsdhflhasdf|sjdhflkasdf."; // facebook user token 

//upload photo 
$args = array(
    'aid'  => $album_id,  // album id, possibly event id? 
    'caption' => $img_caption, // caption for image 
    'uid'  => $facebook_uid, // facebook user id of the poster 
    'format' => 'json' 
    ); 
$args[basename($img_path)] = '@' . realpath($img_path); 
$ch = curl_init(); 
$url = "https://api.facebook.com/method/photos.upload?access_token={$facebook_user_access_token}"; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
$upload_result = curl_exec($ch); 

Đây là cách bạn có thể sử dụng API để tải ảnh lên album facebook sử dụng PHP. Không phải chính xác là chắc chắn rằng nó cũng hoạt động cho các sự kiện. Tôi sẽ kiểm tra nó ra nhưng tôi không thể truy cập facebook từ công việc.

Hy vọng đây là một khởi đầu tốt cho bạn.

2

Điều này dường như làm việc

$file = "pj100.jpg"; 
$args = array(
    'access_token' => 'your access token', 
    'name' => 'Event name', 
    'description' => 'The Description ', 
    'start_time' => '2012-09-01T12:00:00+0000', 
    '@file.jpg' => '@' . realpath($file)); 
$target_url = "https://graph.facebook.com/me/events"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $target_url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
$result = curl_exec($ch); 
curl_close($ch); 

echo "Event ID= " . $result; 
1

Các mã sau đây làm việc cho tôi, bằng cách sử dụng PHP SDK.

$facebook->setFileUploadSupport(true); 
$attachment = array(
    'message' => $caption, 
);  
$attachment[basename($file_path)] = '@' . realpath($file_path); 
$result = $facebook->api('me/photos','post',$attachment); 

Để làm điều đó với nguyên curl, xem this answer.

Các vấn đề liên quan