Клуб пользователей блока «Поделиться»

Указать FB - access_token

CB9TOIIIA
19 сентября 2016, 13:02

Добрый день. К сожалению у FB есть лимиты, примерно 50 запросов счетчика на странице - далее на 5 минут бан, далее можно еще 10 счетчиков (share) получить - потом снова бан.

Возможно ли указать access_token для FB - чтобы не было проблем в получении данных.

У нас есть страница статистики популярности (backend) статей и вот тут вся проблема с FB:

После превышения лимита:

Нехитрыми вычислениями:

https://graph.facebook.com/?id=http://mysite.ru/blabla.html
{
   "error": {
      "message": "(#4) Application request limit reached",
      "type": "OAuthException",
      "is_transient": true,
      "code": 4,
      "fbtrace_id": "Hhk+484x4d2"
   }
}

Но если: 

https://graph.facebook.com/?id=http://mysite.ru/blabla.html&access_token=234432236120051|-ybZh52352357axbBwVZDeY

(токен изменен на неверный).

{ "og_object": { "id": "10150272954075222", "description": "\u041d\u0430\u0439\u0434\u0451\u0442\u0441\u044f \u0432\u0441\u0451", "title": "\u042f\u043d\u0434\u0435\u043a\u0441", "type": "website", "updated_time": "2016-09-19T06:19:07+0000" }, "share": { "comment_count": 0, "share_count": 27470 }, "id": "http://yandex.ru" }

Я попробовал задать такую конструкцию:

$app_fb_token = 'access_token='.$fb_app_token;;
$fb_app_url = $myurltosite.'&'.$app_fb_token;
$fb_app_url = urldecode($fb_app_url);

Но не сработала:

echo "<div class='ya-share2' data-services='vkontakte,facebook,odnoklassniki,moimir,gplus' data-url:facebook='{$fb_app_url}' data-url='{$myurltosite}'  data-size='m' data-counter=''></div>";

На данный момент мне приходится доп. парсить:

$app_fb_token = 'access_token='.$fb_app_token;;
              $fb_app_url = $myurltosite.'&'.$app_fb_token;
              $fb_app_url = urldecode($fb_app_url);

$myfbcountrezerv = "https://graph.facebook.com/?id={$fb_app_url}";


              $ch = curl_init();
              curl_setopt($ch, CURLOPT_URL, $myfbcountrezerv);
              curl_setopt($ch, CURLOPT_POST, false);
              curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2" );
              curl_setopt($ch, CURLOPT_HEADER, 0);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
              $fbsharegetapi = curl_exec($ch);
              curl_close($ch);

 $fbsharegetapi = file_get_contents($myfbcountrezerv); }

               $myfbcountrezervdec = json_decode($fbsharegetapi, true);
               $myfbcount = $myfbcountrezervdec['share']['share_count'];
echo $myfbcount;

Все работает так.

12 комментариев
Подписаться на комментарии к посту
Добрый день.


Да, мы можем добавить поддержку параметра access_token для Facebook. Вероятно, в течение недели.
sameoldmadness,
отлично! буду ожидать!
Супер! Буду ожидать, пожалуйста оповестите.
Есть успехи? Можете добавить переменную?
CB9TOIIIA,
Пока на добрался. Там слегка сложнее всё оказалось, с набегу добавить не получилось. Постараюсь сегодня.
sameoldmadness,
проблема открытости ключа? может в base64 обернуть и норм?
sameoldmadness,
есть успехи?
CB9TOIIIA,
Есть подвижки.


Ключ нельзя прокидывать в url, как остальные параметры, чтобы не светить его в referer. А значит, нужно использовать postMessage. Это, в свою очередь, приводит к изменениям в коде инициализации фрейма.


Я бы осторожно предположил, что к среде можно ожидать.
CB9TOIIIA,
Можно проверять.


data-access-token:facebook
sameoldmadness,
протестировал на рабочих проектах. Все работает! Спасибо :) будем тестить и дальше.
n.galkin@digital-sector.ru
31 октября 2016, 15:33
sameoldmadness,
Пожалуйста подскажите, это в options передается при инициализации? Куда именно?
n.galkin@digital-sector.ru,


Ya.share2('my-share', {
  contentByService: {
    facebook: {
      accessToken: 'xxx'
    }
  }
});