سؤال

أبحث عن وظيفة PHP جيدة وبسيطة للحصول على آخر تحديثات لحالة الفيسبوك. أي شخص يعرف واحد؟

شكرا!

تعديل: لقد أضفت نصف الحل أدناه.

أو إذا كان أي شخص يعرف طريقة جيدة للقراءة في تغذية RSS وصنع تحديث الحالة الحديثة؟

هل كانت مفيدة؟

المحلول 9

منذ أن لم أستطع استخدام مسار API، ذهبت مع RSS الموجود في: http://www.new.facebook.com/minifeed.php؟filter=11.

واستخدمت وظيفة PHP التالية، دعا stature, مع بعض التعديلات الخاصة بي، لتحليل تغذية RSS لحالة Facebook الخاصة بي. يعمل بشكل رائع!

نصائح أخرى

فحص سريع كمثرى وجدت Services_Facebook.

هذه إجابة غير مكتملة، ولكن هذا ما حصلت عليه حتى الآن:

أولا: أضف تطبيق المطور على FB. وبعد ثم قم بإنشاء تطبيق جديد. نسميها ما تريد.

ثانيا: قم بتنزيل عميل PHP. تفريغها في مكان ما على موقع الويب الخاص بك، أي / Facebook /

ثالثا: انسخ الرمز المبتدئ التالي للحصول على نفسك في ملف PHP:

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

معلومات اخرى:

  • يجب تسجيل الدخول وإضافة التطبيق. أو تمنح التطبيق Offline_Access أذونات وأضاف Aapplication.
  • يمكنك إضافة Offline_Access عن طريق الكتابة في عنوان URL التالي: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.
  • أنا في نقطة توقف: أي شيء يقوم برنامجي بإجراء استعلام fql أو users_getinfo، توقف صفحتي تنفيذ php؟ أنا أظن أن هناك قدر محدود من المكالمات للتطبيقات الجديدة؟ لم أفعل أي تطور FB لذلك أنا جديد تماما على ذلك. ربما قم بإجراء المكالمة وحفظ حالتك الأخيرة (أو أحدث حالات) في DB الخاصة بك لمنع المكالمات المفرطة إلى API؟

آمل أن يساعد ذلك في بدء شخص ما!

تعديل: يبدو أن FB لن يسمح لك بالوصول إلى حالة شخص ما، حتى لو تم تشغيل Offline_Access، إلا إذا كنت الشخص أو صديقه (اعتمادا على إعدادات الخصوصية الخاصة بهم).

ومع ذلك، فقد تمكنت أخيرا للعثور على موجز RSS في إصدار ملف تعريف جديد: http://www.new.facebook.com/minifeed.php؟filter=11.

لقد وجدت طريقة لإحضار آخر حالة فيسبوك. هذا هو كيف نفعل ذلك:

1) إنشاء تطبيق Facebook, ونسخ تطبيق التطبيق الخاص بك ومعرف التطبيق.

2) منح التطبيق Read_Stream و Offline_Access إلى ملف التعريف الخاص بك. فيhttp://developers.facebook.com/docs/authentication/permissions.) لجلب أحدث حالك يحتاج التطبيق إلى Access_token. مع Offline_Access الممنوحة يجب أن تنتهي صلاحية الوصول إلى access_token "أبدا". أسهل طريقة للقيام بذلك هي النقر على الزر الناتج عن هذا الرمز: (تأكد من ملء "معرف التطبيق الخاص بك" وتعيين ملف تعريف الارتباط إلى True!)

<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) الآن بعد أن يكون لديك (نأمل) أبدا تنتهي صلاحية apply_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']

لا أعرف كم من الوقت ساري المضيء في الوصول. يقول فيسبوك:

تمكن طلبك من أداء الطلبات المعتمدة نيابة عن المستخدم في أي وقت. بشكل افتراضي، تنتهي معظم رموز الوصول في الوصول بعد فترة زمنية قصيرة لضمان تقديم الطلبات فقط طلبات نيابة عن المستخدم عندما تستخدم التطبيق بنشاط. هذا الإذن يجعل رمز الوصول عاد من قبل نقطة النهاية Oauth منذ فترة طويلة.

إليك وظيفة بسيطة حقا إذا كنت ترغب فقط في الحصول على أحدث حالة. لا يعتمد على Facebook SDK أو أي شيء. تحتاج فقط إلى دعم Curl و JSON.

وظيفة PHP بسيطة للحصول على حالة الفيسبوك

لا يبدو لي أبدا أن تتماشى مع الكمثرى، ولكن إذا كان لديك حظ أفضل مني، فإن محلول الكمثرى يبدو أفضل طريق طويل على المدى الطويل.

فكرة أخرى هي استكشاف Facebook مطور API. مكتبة ومعرفة ما إذا كان ذلك قد يمنحك أي شيء تبحث عنه.

أخيرا، كان هناك وسيلة للحصول على تغذية RSS ... لكنني لا أستطيع أن أجد أي تعليمات تعمل بعد الآن، لكنك قد تقوم بمساعدة Facebook إذا كانت تلك التي تهمك. المنجم ينتهي بالنظر إلى شيء مثل هذا:

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

حصلت عليه يعمل باستخدام وظيفة JENS لاسترداد Access_Token صالحا. بعد ذلك، استخراج رسائل الحالة ووقت النشر من ملف XML باستخدام التعليمات البرمجية التالية (يمكنك تغيير حد $ لعرض رسائل الحالة أكثر أو أقل، أو استخدم نموذجا لتغييره).

تأكد من وضع معرف Facebook الخاص بك ورمز الوصول الذي حصلت عليه من التطبيق الذي قمت بإنشائه (انظر وظيفة جينز). يمكنك التحقق من إخراج هذا البرنامج النصي هنا.

استمتع!

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

}
?>

لقد جربت الكثير من البرامج التعليمية خلال الأيام القليلة الماضية ولم يعمل أي منها. أعتقد أنه قد يكون بسبب Facebook تغيير متطلبات API الخاصة بهم. هذا هو الوحيد الذي وجدته يعمل في الوقت الحالي:

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

ما عليك سوى استخدام إطار 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**
        }
    }
}
<?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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top