0

Я пытаюсь создать плагин для question2answer (знания не обязательно), где, когда новый вопрос отправлен, он публикует этот вопрос как действие на странице facebook. Достижение этого не является проблемой. что я натолкнулся, это настойчивость.Php Facebook API Точки доступа к странице

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

Есть ли другой способ обойти это? Как, может быть, заставить пользователей публиковать на этой странице?

Вот код, который я использую в настоящее время (это не окончательно, без обработки ошибок). Все, что говорит qa_opt только что-то хранится в базе данных question2answer

$facebook2 = new Facebook(array(
                'appId' => qa_opt('facebook_app_id'), 
                'secret' => qa_opt('facebook_secret') 

         )); 

         $facebook2->setAccessToken(qa_opt('facebook_page_access_code')); 

         // Try to extend token 
         $access_token = $facebook2->getExtendedAccessToken(); 



         // As is, with the extended token, we currently post as the user, not the page. Let's fix that 
         $accounts = $facebook->api('/me/accounts?access_token='.$access_token); 
         foreach ($accounts as $account) 
         { 
          if ($account['id'] == qa_opt('facebook_page_id')) 
          { 
           $page_access_token = $account['access_token']; 
           break; // Stop processing foreach 
          } 

         } 

         $fbPageArgs = array('access_token' => $page_access_token, 
            'message' => 'A new question has been created!', 
            'link' => qa_q_path($params['postid'], $params['title'], true), 
            'name' => $params['title'], 
            'description' => $params['text'] 
         ); 

         $facebook2->api("/".qa_opt('facebook_page_id')."/feed?fields=access_token","post",$fbPageArgs); 
+0

Кто-нибудь с идеями? Наверняка кто-то сталкивался с этим раньше. – Eric

ответ

3

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

Следуйте простые шаги:

  1. Получить расширенный маркер на админе (2 месяца действия) (то есть ваш.). Пойдите по ссылке, чтобы получить long-lived token.

    Extending tokens

  2. Получить никогда не истекающий маркер доступа для любой страницы с помощью это token-

    $facebook->api("/PAGE_ID?fields=access_token"); 
    

(Вы можете использовать Facebook's Debug Tool для проверки достоверности жетона).

+0

Несмотря на то, что рекомендованная мною годная работа не позволяла ей отключиться, когда мы выходим из системы, она по-прежнему публикует все новые вопросы в качестве администратора, а не самой страницы. Теперь я не могу найти способ заставить его сделать это. – Eric

+0

Это может быть полезно вам http://stackoverflow.com/a/7649048/1343690 –

Смежные вопросы