2013-07-22 9 views
7

के माध्यम से फेसबुक पर पोस्ट करें मैं एक ट्विटर खोज से एकत्रित संदेशों को स्वचालित रूप से अपने फेसबुक पृष्ठों में से एक में पोस्ट करने के लिए दो दिन का प्रयास कर रहा हूं - यानी एक cronjob के माध्यम से।क्रॉन

ट्विटर का हिस्सा ठीक हो गया, लेकिन मेरे जीवन के लिए मुझे फेसबुक का हिस्सा काम नहीं मिल रहा है।

समस्या यह है कि मेरी स्क्रिप्ट काम करती है ... जब तक ऐसा नहीं होता है, आमतौर पर access_token कुछ घंटों के बाद समाप्त हो जाता है।

अब मेरे पास यह संदेश है: #200) Posts where the actor is a page cannot also include a target_id

मैंने विभिन्न SO धागे पर सुझाई गई कई चीजों की कोशिश की है। समस्या यह है कि: फेसबुक एपीआई अक्सर बदलता प्रतीत होता है और जो काम करता था वह नहीं करता है।

किसी भी विचार और सुझाव के रूप में यह विश्वसनीय तरीके से काम करने के लिए स्वागत है।

यहां मेरे पास अभी तक कोड है। मैंने एक फेसबुक ऐप बनाया है, और FB Graph Explorer और '/ me/account' के अनुरोध का उपयोग करके एक्सेस टोकन जेनरेट किया है।

require('config.inc.php'); 
require('_classes/facebook-php-sdk/src/facebook.php'); 

// Connect to facebook 
$facebook = new Facebook(array(
     'appId' => FB_APP_ID, 
     'secret' => FB_APP_SECRET, 
    )); 

// get the message 
$msg_body = array(
    'message' => $message->message."\n".'(via http://twitter.com/'.$message->author.')', 
    'access_token' => FB_ACCESS_TOKEN 

); 
// Post to Facebook 
$fb_result=0; 
try { 
    $postResult = $facebook->api('/'.PAGEID.'/feed', 'post', $msg_body); 
} catch (FacebookApiException $e) { 
    echo $e->getMessage(); 
} 

if($postResult) 
{ 
    $fb_result=1; 
    $last_posted_tweet_id = $message->id; 
    file_put_contents(FOLDER.LAST_TWEET_ID_FILE, $last_posted_tweet_id); 
    echo 'Your message '.$message->id.' is posted on your facebook wall.'; 
    //print_r($msg_body); 
} 

अद्यतन कोड यहाँ http://phpbin.net/ZMNt3MPt

उत्तर

10

दिखाई मैं पहुँच टोकन अवसान हो रहा है के साथ एक समान समस्या हो रही किया गया है। पता चला है आप अपनी टोकन विनिमय कर सकते हैं "लंबे समय से रहते थे" करने के लिए टोकन

मेरी कोड की खुदाई करने के लिए प्रबंधित:

try{ 
     $token = $facebook->getAccessToken(); 

     // get "long-lived" access token 
     $curl = new Curl(); 
     $curl->setSsl(); 
     $exchange_url = "https://graph.facebook.com/oauth/access_token?client_id=".$facebook_app_id."&client_secret=".$facebook_app_secret."&grant_type=fb_exchange_token&fb_exchange_token=".$token; 
     $page = $curl->get($exchange_url); 

     if ($page){ 
      $page = explode("access_token=", $page); 
      if (count($page) > 1){ 
       $page = explode("&", $page[1]); 
       $token = $page[0]; 

       $facebook->setAccessToken($token); 
      } 
     } 

    } catch(Exception $e){ 
     $token = ''; 
    } 
+0

धन्यवाद। मैं तब से टोकन का उपयोग कैसे करूं? मैंने संदेश बॉडी टोकन कुंजी के साथ $ टोकन का उपयोग करने का प्रयास किया, लेकिन फिर मुझे 'उपयोगकर्ता ने इस क्रिया को करने के लिए एप्लिकेशन को अधिकृत नहीं किया है'। खो गया, मैं हूँ। मैंने अपना पूरा कोड यहां पोस्ट किया है, इसलिए आपके पास एक सिंहावलोकन है। http://phpbin.net/fTVJgkrF – pixeline

+1

मुझे संदेह है कि आप टोकन की समाप्ति की प्रतीक्षा कर रहे हैं और * फिर * इसका आदान-प्रदान कर रहे हैं। जैसे ही आप पहली जगह टोकन प्राप्त करते हैं, एक्सचेंज करें। https://developers.facebook.com/docs/facebook-login/access-tokens/ –

+0

हैलो + लीपंक पर "टोकन और डिबगिंग के बारे में जानकारी प्राप्त करना" देखें: क्या आपके पास पोस्ट किए गए कोड को देखने का मौका मिला है? मैं इस बिंदु पर एक कामकाजी उत्तर के लिए थोड़ा हताश हूँ। ऊपर दिए गए कोड का उपयोग करने से पहले – pixeline

1

वे दूसरे विकल्प का उपयोग कर सकते हैं मैं मेरे लिए यह आसान ट्विटर एपीआई के लिए उपयोग करने के लिए लगता है एक ही समय में twiiter और फेसबुक पर टिप्पणी पोस्ट करें। मैंने इसे फेसबुक से जोड़ा है, यह बहुत अच्छा काम करता है आपको बस इतना करना होगा कि ट्विटर एपीआई कुंजी और डेटा की आपूर्ति करें। यदि आप इस समाधान में रूचि रखते हैं तो मुझे बताएं और मैं यहां कोड पोस्ट करूंगा

+0

समझते हैं, लेकिन मुझे वास्तव में उस दिशा में यह होना चाहिए: ट्विटर से फेसबुक तक। और दूसरी तरफ नहीं। – pixeline

+0

मेरा समाधान वही काम करता है। यह पहले ट्विटर पर पोस्ट करता है और क्योंकि मेरा ट्विटर मेरे फेसबुक से जुड़ा हुआ है, ट्विटर पर किसी भी पोस्ट को स्वचालित रूप से फेसबुक पर पोस्ट किया जाता है –

+0

प्रश्न यह है: आपने अपने ट्विटर को अपने फेसबुक से कैसे लिंक किया? – pixeline