2012-10-10 45 views
5

Estoy usando Facebook SDK para publicar algunas publicaciones en el muro de prueba en mi propia página de Facebook. Lo que quiero es publicar en mi página de Facebook cada 8 horas usando el script PHP CRON y para eso tengo que pasar por alto la página de diálogo de inicio de sesión de Facebook. ¿Alguien sabe cómo autenticar desde la línea de comandos o en el aire?¿Cómo autenticar facebook sdk sin página de diálogo de inicio de sesión?

Respuesta

2

Authenticating as a Page le dará un token de acceso que puede guardar en su base de datos y luego realizar varias tareas utilizando PHP.

Esto es útil para hacer varias cosas usando cron, como programar publicaciones, mantener varias páginas, publicar en varias páginas a la vez, cargar fotos y muchas otras actividades usando Graph API. Consulte sus documentos para obtener más información sobre cómo hacerlo.

Nota: Solo tiene que autenticar su aplicación una vez y guardar su clave de token de acceso a la página, una vez que hace esto, no tiene que volver a iniciar sesión y puede usar su token de acceso para realizar varias tareas en su página .

+0

¿No vence el token? –

+0

Sí, se vencerá. Pero puede extender el token haciendo una llamada a la API y obteniendo un token de larga duración (máximo de validez de 60 días), luego puede guardarlo en su base de datos. –

-1

No, no hay forma de eludir la página de diálogo de inicio de sesión de Facebook, aunque para su caso puede recuperar la clave de acceso extendida y usarla para publicar en su muro. Se puede utilizar el siguiente código utilizando el SDK de PHP para recuperar el token de acceso

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

Entonces sólo tiene que utilizar

$facebook->setAccessToken();

a publicar en su página. Recuerde obtener el permiso antes de generar el token de acceso extendido.

2

Facebook proporciona un token de acceso para que un usuario use la aplicación de Facebook. Por primera vez, el usuario debe iniciar sesión a través del inicio de sesión de Facebook, luego de iniciar sesión en el sitio, le pedirá permiso para acceder a la aplicación. Una vez que el usuario acepte, Facebook le devolverá un código a través de la url. Usted tiene que tomar el código y usarlo para obtener acceso de ficha

mediante el uso siguiente código

$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]); 

Aquí $ testigo tendrá el token de acceso de un usuario, u puede almacenar esa señal en ur db local y Usa ese token para publicar un mensaje en Facebook. es simple ... eso es todo.

para publicar un mensaje en el Fb pared

$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(); 
     } 

Aquí tienes a ID de usuario de Facebook del usuario. Para obtener ID de usuario utilizar el siguiente código

$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; 
} 

Prueba esto. Avísame si hay problemas

+0

¿Qué es $ this-> getContents no puedo encontrar ningún nombre de método como este en Facebook SDK –

+0

Agregué la función getContents. Perdón por haber perdido ese. –

+0

En lugar de llamar a la función, puede colocar el código directamente. –

Cuestiones relacionadas