PHP functie om Facebook-status te krijgen?

stemmen
9

Ik ben op zoek naar een goede, eenvoudige PHP functie om mijn laatste Facebook status updates te krijgen. Iedereen weet van een?

Bedankt!

EDIT: Ik heb een half-oplossing beneden toegevoegd.

Of als iemand weet een goede manier om te lezen in de RSS-feed en spugen de recente status update?

De vraag is gesteld op 20/12/2008 om 22:44
bron van user
In andere talen...                            


10 antwoorden

stemmen
6

Een snelle controle op PEER gevonden Services_Facebook

antwoordde op 20/12/2008 om 22:53
bron van user

stemmen
1

Ik heb nooit lijken om samen met peer, maar als je meer geluk dan ik, dan is de PEAR oplossing lijkt de beste route op lange termijn.

Een ander idee is om het te verkennen Facebook Developer API bibliotheek te zien of dat je alles wat je op zoek bent naar zou kunnen geven.

Tot slot is er vroeger een manier om een ​​RSS-feed te krijgen ... maar ik kan niet schijnen om de instructies die meer werken te vinden, maar je zou rondneuzen Facebook hulp als dat u interesseert. Mine eindigt zoiets als dit kijken:

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

antwoordde op 20/12/2008 om 23:09
bron van user

stemmen
3

Dit is een onvolledige antwoord, maar dit is wat ik tot nu toe heb gekregen:

Ten eerste: voeg de ontwikkelaar applicatie op FB . Maak vervolgens een nieuwe toepassing. Noem het wat je wilt.

Ten tweede: Download de PHP-client. Dump het ergens op uw webhost, dat wil zeggen / facebook /

Ten derde: Kopieer de volgende beginner code om zelf aan de slag te krijgen in een php-bestand:

 <?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
 ?>

Andere informatie:

  • Je moet ingelogd zijn en hebben de applicatie toegevoegd. OF je de applicatie offline_access toestemmingen geven en hebben de aapplication toegevoegd.
  • U kunt offline_access toevoegen door te typen in de volgende url: http://www.facebook.com/authorize.php?api_key=YOUR_API_KEY&v=1.0&ext_perm=offline_access
  • meer informatie over machtigingen gevonden hier: http://wiki.developers.facebook.com/index.php/Extended_permissions
  • Ik ben op een stopplaats: anything mijn programma noemt de FQL vraag of users_getInfo, mijn pagina stopt het uitvoeren van de php? Ik gok dat er een beperkt bedrag van de gesprekken voor nieuwe toepassingen? Ik heb nog nooit FB ontwikkeling gedaan dus ik ben helemaal nieuw voor het. Misschien voert het gesprek en sla uw recent de status (of meest recente statussen) in uw eigen DB om overmatige oproepen naar de API te voorkomen?

Ik hoop dat dit helpt iemand aan de slag!

EDIT: Het lijkt erop dat FB niet zal laten u toegang tot iemands status zelfs als de offline_access is ingeschakeld, tenzij je die persoon of hun vriend (afhankelijk van hun privacy-instellingen).

Ik heb echter, eindelijk in slagen om de RSS-feed in het nieuwe profiel versie te vinden: http://www.new.facebook.com/minifeed.php?filter=11

antwoordde op 21/12/2008 om 10:03
bron van user

stemmen
0

Sinds ik de API route niet kon gebruiken, ging ik met de RSS te vinden op: http://www.new.facebook.com/minifeed.php?filter=11

En gebruikte de volgende PHP functie, genaamd StatusPress , met een aantal van mijn eigen wijzigingen, op de RSS feed voor mijn Facebook-status te ontleden. Werkt goed!

antwoordde op 04/01/2009 om 20:35
bron van user

stemmen
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>
antwoordde op 23/04/2010 om 16:29
bron van user

stemmen
2

Ik heb een manier om uw nieuwste Facebook-status te halen gevonden. Dit is hoe je het doet:

1) Maak een facebook app , en kopieer uw aanvraag geheim en applicatie-id.

2) Verleen de app read_stream en offline_access bij uw profiel. ( Http://developers.facebook.com/docs/authentication/permissions ) Als u uw laatste status van de app moet een access_token halen. Met offline_access verleende de access_token moet "nooit" verlopen. De eenvoudigste manier om dit te doen is door te klikken op de knop die door deze code: (zeker in 'uw app id' en zet cookie om trouw aan te vullen!)

<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) Probeer nu te achterhalen wat access_token het wordt gebruikt. De access_token wordt opgeslagen in de fbs_appId cookie. Zoek met behulp van uw browser of met behulp van $_COOKIE['fbs_appId']. Kijk voor access_token=....

4) Nu dat u een (hopelijk) nooit afloopt access_token kunt u de volgende code gebruiken:

$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) Het berichtdeel worden gevestigd: $response['data'][0]['message']

Ik weet niet hoe lang de toegang token geldig is. Facebook zegt:

Kan uw toepassing geautoriseerde verzoeken uit te voeren namens de gebruiker op elk moment. Standaard worden de meeste toegangstokens vervallen na een korte periode om ervoor te zorgen applicaties alleen aanvragen voor rekening van de gebruiker wanneer het actief gebruik van de applicatie. Deze toestemming maakt de toegang token geretourneerd door onze OAuth eindpunt van lange duur.

antwoordde op 27/04/2010 om 09:56
bron van user

stemmen
1

Ik heb het werken met behulp van Jens' post om een ​​geldig access_token te halen. Daarna heb ik de status van berichten en het tijdstip van het plaatsen van de xml-bestand met de volgende code gehaald (je kunt veranderen $ limiet aan min of meer statusberichten weer te geven, of gebruik een vorm om het te veranderen).

Zorg ervoor dat u in uw Facebook-ID aan te zetten en de toegang token heb je vanuit de app die u hebt gemaakt (zie Jens' post ). U kunt de uitvoer van dit script te controleren hier .

Veel plezier!

<?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");

}
?>
antwoordde op 01/09/2010 om 22:02
bron van user

stemmen
2

Hier is een heel eenvoudige functie als je gewoon wilt de laatste status te krijgen. Het is niet afhankelijk van de Facebook-SDK of iets dergelijks. Je hoeft alleen maar krullen en JSON ondersteuning.

Eenvoudige PHP functie om Facebook-status krijgen

antwoordde op 09/11/2010 om 21:57
bron van user

stemmen
1

Ik heb geprobeerd tal van tutorials over de laatste paar dagen en geen van hen hebben gewerkt. Ik denk dat het kan te wijten zijn aan facebook veranderen van hun api eisen. Dit is de enige die ik vond dat werkt op het moment:

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

antwoordde op 16/06/2011 om 13:19
bron van user

stemmen
1

Gebruik gewoon PHPforFB framework ( www.phpforfb.com/en/ ) voor de snelste manier.

De code ziet er als volgt uit:

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**
        }
    }
}
antwoordde op 20/02/2012 om 20:10
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more