2008-12-20 20 views
9

मैं अपने नवीनतम फेसबुक स्टेटस अपडेट प्राप्त करने के लिए एक अच्छा, सरल PHP फ़ंक्शन ढूंढ रहा हूं। किसी को भी पता है?PHP फ़ंक्शन?

धन्यवाद!

संपादित करें: मैंने नीचे आधा समाधान जोड़ा है।

या यदि कोई आरएसएस फ़ीड में पढ़ने और हालिया स्थिति अपडेट को थूकने का अच्छा तरीका जानता है?

+0

दिलचस्प सवाल है। मुझे वह जवाब भी चाहिए! – Skuta

+0

अफसोस की बात है कि नीचे वर्णित इन सभी विधियों को अब बाहर दिनांकित किया गया है:/ – Petrogad

उत्तर

0

जब से मैं एपीआई मार्ग का उपयोग नहीं कर सकता है, मैं राष्ट्रीय स्वयंसेवक संघ के साथ चला गया: http://www.new.facebook.com/minifeed.php?filter=11

और मेरे फेसबुक की स्थिति के लिए आरएसएस फ़ीड को पार्स करने के लिए, मेरे कुछ संशोधनों के साथ निम्नलिखित PHP फ़ंक्शन, called StatusPress का उपयोग किया। बहुत अच्छा काम करता है!

1

मैं कभी नहीं नाशपाती के साथ साथ पाने के लिए लग रहे हैं, लेकिन अगर आप मैं की तुलना में बेहतर किस्मत है, तो नाशपाती समाधान सबसे अच्छा मार्ग लंबे समय लगता है।

एक और विचार Facebook Developer API लाइब्रेरी का पता लगाने और यह देखने के लिए कि क्या आपको वह कुछ भी मिल सकता है जो आप ढूंढ रहे हैं।

आखिरकार, आरएसएस फ़ीड प्राप्त करने का एक तरीका होता था ... लेकिन मुझे अब कोई भी निर्देश नहीं मिल रहा है, लेकिन यदि आप रुचि रखते हैं तो आप फेसबुक सहायता के आसपास पोक कर सकते हैं। मेरा कुछ इस तरह लग रही समाप्त होता है:

http://www.new.facebook.com/feeds/status.php?id=[idnumber]&viewer=[viewer]&key=[key]&format=rss20

3

यह एक अधूरी जवाब है, लेकिन यह क्या मैं अब तक मिल गया है है:

पहले: add the developer application on FB। फिर एक नया आवेदन बनाएँ। आप उसे जो चाहें कहें।

दूसरा: Download the PHP client. कहीं यह डंप अपने webhost पर, यानी/फेसबुक/

तीसरा:

<?php 
require_once('facebook/php/facebook.php'); 
$facebook = new Facebook("YOUR_API_KEY","YOUR_SECRET_KEY"); 
$result = $facebook->api_client->fql_query("SELECT status FROM user WHERE uid = YOURIDNUMBER"); 
// OR --- they both get the same data 
$result = $facebook->api_client->users_getInfo(YOURIDNUMBER,'status'); 
print_r($result); 
echo "<pre>Debug:" . print_r($facebook,true) . "</pre>"; // debug info 
?> 

अन्य जानकारी: निम्नलिखित शुरुआत कोड को कॉपी करने के अपने आप को एक php फ़ाइल में शुरू करने के लिए

  • आपको लॉग इन होना चाहिए और एप्लिकेशन जोड़ा गया है। या आप एप्लिकेशन ऑफ़लाइन_एसीएएस अनुमतियां देते हैं और एप्लिकेशन जोड़ा गया है। http://www.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=offline_access
  • अनुमतियों पर
  • अधिक जानकारी यहां पाया: http://wiki.developers.facebook.com/index.php/Extended_permissions
  • मैं एक रोक बिंदु पर कर रहा हूँ:
  • आप निम्न URL में टाइप करके offline_access जोड़ सकते हैं कुछ भी मेरी कार्यक्रम fql क्वेरी या users_getInfo कॉल , मेरा पृष्ठ PHP को निष्पादित करता है? मुझे लगता है कि नए अनुप्रयोगों के लिए पर सीमित मात्रा में कॉल हैं? मैंने कभी भी किसी भी एफबी विकास नहीं किया है, इसलिए मैं पूरी तरह से नया हूं। शायद कॉल करें और (या हालिया स्थितियों) को अपने में अपने डीबी को एपीआई पर अत्यधिक कॉल को रोकने के लिए कॉल करें और सहेजें?

मुझे आशा है कि इससे किसी को शुरू करने में मदद मिलेगी!

संपादित करें: ऐसा लगता है अमेरिकन प्लान आप किसी स्थिति का उपयोग (उनकी गोपनीयता नीति के आधार पर) भले ही offline_access पर है, जब तक कि आप उस व्यक्ति को या उनके दोस्त हैं, नहीं दूँगा कि।

मैं हालांकि, अंत में नए प्रोफ़ाइल संस्करण में आरएसएस फ़ीड को खोजने के लिए प्रबंधन कैसे किया: पर पाया http://www.new.facebook.com/minifeed.php?filter=11

+0

आपको कहीं और कुछ देखना चाहिए। जब आपके पास php.ini में display_errors = off होता है तो एक खाली आउटपुट आमतौर पर apache error_log पर जाने वाली घातक त्रुटि का संकेत होता है। एफबी क्लाइंट अच्छी तरह से ओओएड PHP5 है और आमतौर पर त्रुटि की स्थिति में काफी सार्थक और विस्तृत अपवाद फेंकता है। – Ian

+0

मैंने अपनी SECRET कुंजी को रीसेट करने का अंत किया और समस्या को हल किया। हालांकि, मेरी एफक्यूएल क्वेरी तब तक कोई परिणाम नहीं देगी जब तक कि मैं इसमें शामिल न हो: $ fb_user = $ facebook-> requ_login() ;. ऑफ़लाइन_एसीसी की अनुमति सही ढंग से काम नहीं कर रही प्रतीत होती है या मैं इस गलत पर जा रहा हूं। –

+0

यहां PHP क्लाइंट के लिए एक कामकाजी लिंक है: http://github.com/facebook/php-sdk/ –

0
<?php 
// see http://github.com/facebook/php-sdk/blob/master/facebook.php 
require './facebook.php'; 
// Create our Application instance. 
// see http://www.youtube.com/watch?v=jYqx-RtmkeU for how to get these numbers 
$facebook = new Facebook(array('appId' => 'XXX','secret' => 'XXX')); 
// This call will always work since we are fetching public data. 
// this could be /username or /username/friends etc... 
// see developer api for FQL for examples 
$status = $facebook->api('/haanmc/feed?limit=1'); 
?> 
<p><?php print $status['data'][0]['message']; ?></p> 
<p>Likes: <?php print $status['data'][0]['likes']; ?> | Comments: <?php print count($status['data'][0]['comments']['data']); ?></p> 
<textarea style="width: 95%; height: 600px;"><?php print_r($status); ?></textarea> 
2

मुझे आपकी नवीनतम फेसबुक स्थिति लाने का कोई तरीका मिला है। इस प्रकार आप इसे करते हैं:

1) Create a facebook app, और अपने एप्लिकेशन को गुप्त और एप्लिकेशन आईडी कॉपी करें।

2) अपनी प्रोफ़ाइल में ऐप read_stream और offline_access अनुदान दें। (http://developers.facebook.com/docs/authentication/permissions) अपनी नवीनतम स्थिति लाने के लिए ऐप को access_token की आवश्यकता है। ऑफ़लाइन_एकस के साथ access_token को "कभी नहीं" समाप्त होना चाहिए। यह करने के लिए सबसे आसान तरीका है इस कोड द्वारा उत्पन्न बटन पर क्लिक करना है: ('अपने अनुप्रयोग आईडी' और सही पर सेट कुकी में भरने के लिए सुनिश्चित करें!)

<fb:login-button perms="read_stream,offline_access"></fb:login-button> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script>FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});</script> 

3) अब क्या ACCESS_TOKEN पता लगाने के लिए कोशिश यह उपयोग कर रहा है। Access_token fbs_appId कुकी में सहेजा गया है। अपने ब्राउज़र का उपयोग करके या $_COOKIE['fbs_appId'] का उपयोग करके इसे ढूंढें। access_token=... के लिए देखो।

4) अब आप हैं, वे एक (उम्मीद) कभी नहीं समाप्त हो रही ACCESS_TOKEN आप निम्नलिखित कोड का उपयोग कर सकते हैं:

$access_token='xxxxxxxxxxxxxxxxxxxx'; 
$appId='123456789132456789'; 
$appSecret='xxxxxxxxxxxxxxxxxxxx'; 
$profileId='123456789'; 

//http://github.com/facebook/php-sdk/blob/master/src/facebook.php 
require 'facebook.php'; 

$facebook = new Facebook(array('appId' => $appId,'secret' => $appSecret)); 
$response = $facebook->api('/'.$profileId.'/feed?limit=1&access_token='.$access_token); 

5) संदेश हिस्सा स्थित होना चाहिए: $response['data'][0]['message']

मैं नहीं जानता कितनी देर तक पहुंच टोकन मान्य है। फेसबुक कहता है:

किसी भी समय उपयोगकर्ता की तरफ से अधिकृत अनुरोध करने के लिए आपके आवेदन को सक्षम करता है। डिफ़ॉल्ट रूप से, अधिकांश एक्सेस टोकन एक अल्पकालिक अवधि के बाद समाप्त हो जाते हैं ताकि यह सुनिश्चित किया जा सके कि एप्लिकेशन सक्रिय रूप से एप्लिकेशन का उपयोग करते समय उपयोगकर्ता की तरफ से अनुरोध कर सकें। यह अनुमति लंबे समय तक हमारे ओथ एंडपॉइंट द्वारा लौटाई गई एक्सेस टोकन बनाती है।

1

मुझे यह वैध access_token पुनर्प्राप्त करने के लिए जेन्स की पोस्ट का उपयोग करके काम कर रहा है। फिर, मैंने निम्न संदेश का उपयोग कर स्थिति संदेशों और xml फ़ाइल से पोस्ट करने का समय निकाला (आप कम या कम स्थिति संदेश प्रदर्शित करने के लिए $ सीमा बदल सकते हैं, या इसे बदलने के लिए एक फॉर्म का उपयोग कर सकते हैं)।

अपने फेसबुक आईडी और आपके द्वारा बनाए गए ऐप से प्राप्त पहुंच टोकन में रखना सुनिश्चित करें (Jens' post देखें)। आप इस स्क्रिप्ट के आउटपुट को देख सकते हैं here

मज़े करो!

<?php 
if(isset($_POST['limit'])) { 
    $limit = $_POST['limit']; 
} 
else { 
    $limit = 3; // number of status messages to display 
} 
$f = fopen ("https://api.facebook.com/method/status.get?uid=YOUR_FACEBOOK_ID&limit=".$limit."&access_token=YOUR_ACCESS_TOKEN", "r"); 

while ($line= htmlentities(fgets($f))) { 
    if ($line===FALSE) print ("FALSE\n"); 
    else 
    { 
     $content = $content." ".$line; 
    } 
} 
fclose ($f); 

$message = explode("&lt;message&gt;", $content); // search for the <message> tag 
$message_cnt = count($message); 
$msg_index = 0; 

$time = explode("&lt;time&gt;", $content); // search for the <time> tag 

for($i=1; $i<$message_cnt; $i++) 
{ 
    $tmp = explode("&lt;/message&gt", $message[$i]); 
    $msg[$msg_index] = $tmp[0]; // status message 

    $tmp2 = explode("&lt;/time&gt", $time[$i]); 
    $t[$msg_index++] = $tmp2[0]; // time of posting 
} 

for($i=0; $i<$msg_index; $i++) 
{ 
    echo("<span class=\"status\">".preg_replace('!\015\012|\015|\012!','<br>',$msg[$i])."</span><br>\n 
      <span class=\"date\">on ".date("d.m.Y", $t[$i])." at ".date("H:i",$t[$i])."</span><br><br>\n"); 

} 
?> 
2

यदि आप नवीनतम स्थिति प्राप्त करना चाहते हैं तो यहां एक वास्तविक सरल कार्य है। यह फेसबुक एसडीके या कुछ भी पर निर्भर नहीं है। आपको केवल कर्ल और JSON समर्थन की आवश्यकता है।

Simple PHP function to get facebook status

+0

उपरोक्त क्योंकि यह मुझे आवरण में आपकी त्रुटियों को ठीक करने के बाद कुछ समय बचाता है वैरिएबल नामों और विफलता की जांच करने में विफलता अगर सरणी के इत्यादि से पहले मान थे। – jerrygarciuh

1

मैं पिछले कुछ दिनों में ट्यूटोरियल का भार की कोशिश की है और उनमें से कोई काम किया है। मुझे लगता है कि यह फेसबुक की एपीआई आवश्यकताओं को बदलने के कारण हो सकता है।

http://www.deanblog.co.uk/article/13/adding-a-facebook-status-feed-to-your-website-with-php

+0

वर्तमान एफबी एपीआई पर मेरे लिए काम किया ... जो भी संस्करण अब है। –

1

बस सबसे तेज़ तरीका है के लिए PHPforFB फ्रेमवर्क (www.phpforfb.com/en/) का उपयोग: यह केवल एक ही मैंने पाया कि इस समय काम करता है।

कोड इस तरह दिखता है:

require_once('phpforfb_framework.php'); 

$structInit = array('app_id' => APP_ID,'app_name' => APP_NAME,'sec_key' => APP_SECKEY); 

$FacebookAPP = new PHPforFB($structInit); 

if($FacebookAPP->lastErrorCode>0){ 
    //Creation failed => Display error message and exit 
    echo "PHPforFB Error: ".$FacebookAPP->lastErrorCode." -> ".$FacebookAPP->lastError; 
}else{ 
    //PHPforFB framework established 

    if($FacebookAPP->userLoggedIn === TRUE){ 

     //If the user is logged in at Facebook: 
     //Here you can determine if the user has at least once before 
     //granted basic permissions to your application. 
     if($FacebookAPP->userAuthenticated === FALSE){ 

      //The user has not yet granted permissions 
      //**your code here** 
     }else{ 
      //The user has already granted permissions, therefore his Facebook ID 
      //is known to us. It is always available in $FacebookAPP->userID: 

      $userID = $FacebookAPP->userID; 
      //**your code here** 
     } 
    } 
} 
संबंधित मुद्दे