PHP функционируют для получения состояния Facebook?

clang (libc ++) кажется несовместимым по этому вопросу, потому что стандарт гласит:

[unique.ptr.single.dtor]

~unique_ptr();
  1. Требуется: Выражение get_­deleter()(get()) должно быть правильно сформированным, иметь четко определенное поведение и не должно создавать исключений. [ Примечание: Использование default_­delete требует, чтобы T был полным типом. - конечная нота ]

  2. Эффекты: если get() == nullptr нет эффектов. В противном случае get_­deleter()(get()).

blockquote>

Таким образом, деструктор должен быть эквивалентен get_deleter()(get()), из чего следует, что b->a не может быть nullptr внутри деструктора из A (который вызывается внутри get_deleter() как delete инструкция).


С другой стороны, и clang (libc ++), и gcc (libstdc ++) устанавливают указатель на nullptr при уничтожении std::unique_ptr, но вот деструктор gcc:

auto& __ptr = _M_t._M_ptr();
if (__ptr != nullptr)
    get_deleter()(__ptr);
__ptr = pointer();

... и вот clang (вызов reset()):

pointer __tmp = __ptr_.first();
__ptr_.first() = pointer();
if (__tmp)
   __ptr_.second()(__tmp);

Как видите, gcc сначала удаляет, а затем присваивает nullptr ] (pointer()), в то время как clang сначала присваивает nullptr (pointer()), затем удаляет 1 sup>.


1 sup> pointer - это псевдоним, соответствующий Deleter::pointer, если он существует, или просто T*. ​​

9
задан Bryan Denny 22 December 2008 в 21:57
поделиться

7 ответов

Так как я не мог использовать маршрут API, я пошел с RSS, найденным в: http://www.new.facebook.com/minifeed.php?filter=11

И используемый следующая функция PHP, вызванная StatusPress, с некоторыми моими собственными модификациями, для парсинга канала RSS для моего состояния Facebook. Работает отлично!

0
ответ дан 4 December 2019 в 12:22
поделиться

Быстрая проверка на ГРУШЕ нашла Services_Facebook

6
ответ дан 4 December 2019 в 12:22
поделиться

Я никогда, кажется, не лажу с ГРУШЕЙ, но если у Вас есть лучшая удача, чем я, затем ГРУШЕВОЕ решение кажется длительным сроком оптимального маршрута.

Другая идея состоит в том, чтобы исследовать библиотеку Facebook Developer API и видеть, могло ли это дать Вам что-нибудь, что Вы ищете.

Наконец, раньше был способ получить канал RSS..., но я, может казаться, не нахожу инструкций, которые больше работают, но Вы могли бы ввести по абсолютному адресу вокруг справки Facebook, если это интересует Вас. Мой заканчивает тем, что выглядел примерно так:

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

1
ответ дан 4 December 2019 в 12:22
поделиться

Это - неполный ответ, но это - то, что я получил до сих пор:

Во-первых: добавьте приложение разработчика на FB. Затем создайте новое приложение. Назовите его вообще, Вы хотите.

Во-вторых: Загрузите клиент PHP. Выведите его где-нибудь на Вашем webhost, т.е./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 полномочия и добавили приложение.
  • Можно добавить 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 не позволит Вам доступ someones состояние, даже если offline_access будет идти, если Вы не то, что человек или их друг (в зависимости от их настроек конфиденциальности).

Мне действительно однако, наконец удавалось найти канал RSS в новой версии профиля: http://www.new.facebook.com/minifeed.php?filter=11

3
ответ дан 4 December 2019 в 12:22
поделиться
<?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>
0
ответ дан 4 December 2019 в 12:22
поделиться

Я нашел способ получить ваш последний статус на Facebook. Вот как вы это делаете:

1) Создайте приложение facebook и скопируйте секрет и идентификатор приложения.

2) Разрешите приложению read_stream и offline_access своему профилю. ( http://developers.facebook.com/docs/authentication/permissions ) Для получения вашего последнего статуса приложению требуется access_token. С предоставлением offline_access срок действия access_token не должен истекать никогда. Самый простой способ сделать это - нажать кнопку, сгенерированную этим кодом: (обязательно введите «идентификатор вашего приложения» и установите для cookie значение 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 сохраняется в файле cookie 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 ']

Я не знаю, КАК долго токен доступа действителен. Facebook сообщает:

Позволяет вашему приложению выполнять авторизованные запросы от имени пользователя в любое время.По умолчанию срок действия большинства токенов доступа истекает через короткий период времени, чтобы гарантировать, что приложения будут делать запросы только от имени пользователя, когда они активно используют приложение. Это разрешение делает токен доступа, возвращаемый нашей конечной точкой OAuth, долгоживущим.

2
ответ дан 4 December 2019 в 12:22
поделиться

Я заработал, используя сообщение Йенса, чтобы получить действительный access_token.Затем я извлек сообщения о состоянии и время публикации из файла xml, используя следующий код (вы можете изменить $limit, чтобы отображать больше или меньше сообщений о состоянии, или использовать форму для его изменения).

Обязательно укажите свой Facebook ID и токен доступа, который вы получили от созданного вами приложения (см. сообщение Йенса). Вы можете проверить вывод этого скрипта здесь.

Удачи!

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

}
?>
1
ответ дан 4 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: