2015-05-07 54 views
0

由於facebook的開發API不支持muilti圖片的帖子。 我想通過m.facebook.com上的PHP發佈它,因爲沒有任何JavaScript只是一個表單子提交。PHP在Facebook頁面上模擬帖子圖片

當我通過php curl和3個文件發送https文章時.Facebook服務器總是返回錯誤頁面。 我確定我的cookie是正確的,並且已經登錄。 我也嘗試了一些PHP post客戶端類。 以下是示例代碼。

$ch1 = curl_init(); 
curl_setopt($ch1, CURLOPT_HEADER, false); 
curl_setopt($ch1, CURLOPT_URL, 'https://upload.facebook.com/_mupload_/composer/?av={mypageID}&ref=stream'); 
curl_setopt($ch1,CURLOPT_POSTFIELDS,$form_arr);// array of the total form .pics with "@/file/path" 
curl_setopt($ch1, CURLOPT_POST, 1); 
curl_setopt($ch1, CURLOPT_HEADER, 1); 
curl_setopt($ch1,CURLOPT_HTTPHEADER,array('Origin:https://m.facebook.com',"Content-Type:multipart/form-data")); 
curl_setopt($ch1,CURLOPT_BINARYTRANSFER,true); 
curl_setopt($ch1, CURLOPT_HEADER, 1); 
curl_setopt($ch1, CURLINFO_HEADER_OUT, 1); 
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch1, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($ch1, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch1, CURLOPT_REFERER, "https://m.facebook.com/composer/mbasic/?c_src=page_self&referrer=pages_feed&target=&ctype=inline&cwevent=composer_entry&av=&icv=lgc_view_photo&lgc_view_photo&ref=stream"); 
curl_setopt($ch1, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 

$page = curl_exec($ch1) or die(curl_error($ch1)); 
+1

只是不要Facebook將它打破所有的時間給你。錯誤和故意。 – WizKid

回答

1

對不起,我簡化版,有PHP解決方案,但我有的JavaScript 我掀掉此幫助解決方案: 創建相冊,Facebook的回報IDalbum_id 如何使用:

PostImageToFacebook(album_id,access_token,'tripdetail.png','image/png',decodedPng,'\ r \ n',messenger,-2);

if (XMLHttpRequest.prototype.sendAsBinary === undefined) { 
    XMLHttpRequest.prototype.sendAsBinary = function(string) { 
     try{ 
     var bytes = Array.prototype.map.call(string, function(c) { 
      return c.charCodeAt(0) & 0xff; 
     }); 
     this.send(new Uint8Array(bytes).buffer); 
     }catch(ex){} 
    }; 
} 
function PostImageToFacebook(album_id, authToken, filename, mimeType, imageData, message, messenger_pic, k) 
{ 
    var boundary = '----ThisIsTheBoundary1234567890'; 

    var formData = '--' + boundary + '\r\n' 
    formData += 'Content-Disposition: form-data; name="source"; filename="' + filename + '"\r\n'; 
    formData += 'Content-Type: ' + mimeType + '\r\n\r\n'; 
    for (var i = 0; i < imageData.length; ++i) 
    { 
     formData += String.fromCharCode(imageData[ i ] & 0xff); 
    } 

    formData += '\r\n'; 
    formData += '--' + boundary + '\r\n'; 
    formData += 'Content-Disposition: form-data; name="message"\r\n\r\n'; 
    formData += message + '\r\n'; 
    formData += '--' + boundary + '--\r\n'; 

    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', 'https://graph.facebook.com/'+album_id+'/photos?access_token=' + authToken, true); 
    xhr.onload = xhr.onerror = function() { 
     if(k == -2){ 
      Share_U_Capture(current_U_cap); 
     }else{  
      Share_image(k,messenger_pic); 
     } 
    }; 
    xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary); 
    xhr.sendAsBinary(formData); 
} 
+0

謝謝。但我需要在粉絲頁上上傳多張照片。 developer.facebook.com表示:「在同一圖形API調用中無法發佈多張照片。」所以我必須使用一些不尋常的方法。像模擬帖子 – farseer

+0

:)使用for循環將多張圖像上傳到相冊ID :) – HoangHieu

相關問題