2012-10-10 4 views
5

Я использую Facebook SDK, чтобы опубликовать несколько стендов на моей странице в Facebook. Я хочу опубликовать на моей странице facebook каждые 8 ​​часов, используя PHP CRON-скрипт, и для этого мне нужно обойти страницу входа в систему Facebook. Так кто-нибудь знает способ аутентификации из командной строки или в эфире?Как проверить подлинность facebook sdk без диалогового окна входа?

ответ

2

Authenticating as a Page предоставит вам токен доступа, который вы можете сохранить в своей базе данных, а затем выполнить различные задачи с помощью PHP.

Это полезно для выполнения различных действий с использованием cron, таких как расписание сообщений, поддержка нескольких страниц, отправка нескольких страниц одновременно, загрузка фотографий и многое другое с использованием Graph API. Проверьте их документы для получения дополнительной информации о том, как это сделать.

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

+0

Не истечет срок годности? –

+0

Да, срок действия истек. Но вы можете расширить токен, сделав вызов API и получить долгоживущий токен (максимальный срок действия 60 дней), затем вы можете сохранить его в своей базе данных. –

-1

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

$extendedToken = $facebook->setExtendedAccessToken(); 
$facebook->api('<PAGE_ID>?fields=access_token'); 

Тогда просто использовать

$facebook->setAccessToken();

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

2

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

, используя следующий код

$url = "https://graph.facebook.com/oauth/access_token?client_id=". $yourappId ."&redirect_uri=". urlencode($this->redirect_url) ."&client_secret=". $youappsecret."&code=". $code; 
$auth_token = $this->getContents($url); 

$str = explode('=',$auth_token); 
$token = explode('&expires', $str[1]); 

Здесь $ маркер будет иметь маркер доступа к пользователю, и может хранить этот маркер в ур локальной БД и используйте этот токен, чтобы опубликовать сообщение на стене facebook. его простой .. вот и все.

Чтобы отправить сообщение на Fb стены

$fb_id  = "User_fb_id" 
$access_token = "User_Access_Token_Take by Above code" 
$msg  = "Message_to_post" 
$img_path  = "Image_Path"  
$facebook = new Facebook(array(
'appId' => $this->appId, 
'secret' => $this->secret, 
'cookie' => true)); 
if($msg != NULL) { 
$attachment = array(
'message' => $msg, 
'name' => 'NHM',             
'picture' => $img_path); 
} 
try {$result = $facebook->api('/'. $fb_id . '/feed/', 
            'post', 
            $attachment); 

       if(isset($result['id'])) 
       return true; 
      else 
       return false; 
      } catch(FacebookApiException $e) { 
      return $e->getMessage(); 
     } 

Здесь вы должны Id пользователя Facebook пользователей. Чтобы получить идентификатор пользователя, используйте следующий код:

$url = "https://graph.facebook.com/me?access_token=". $access_token; 
$userInfo = $this->getContents($url); 
$userInfo = json_decode($userInfo, true); 


public function getContents($url) { 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$content = curl_exec ($ch); 
curl_close ($ch); 
return $content; 
} 

Попробуйте это. Дайте мне знать Если возникнут какие-либо вопросы

+0

Что такое $ this-> getContents Я не могу найти какое-либо имя метода, подобное этому в facebook SDK –

+0

Я добавил функцию getContents. Извините за отсутствие этого. –

+0

Вместо вызова функции вы можете поместить код непосредственно. –

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