2013-06-08 11 views
5

Desidero che la mia app sia pubblicata sul muro di un utente per conto (ad esempio per la pubblicità). Penso alla creazione di uno script php, che eseguirò con un cron job sul mio server ogni settimana. Ho gli userids nel mio database. Ora voglio che lo script ottenga un ID utente e quindi un messaggio sul muro dell'utente. (ovviamente se l'utente ha ancora installato l'app e ha concesso il permesso di flusso di pubblicazione)Posta automaticamente sul muro dell'utente (App per Facebook)

è possibile creare uno script che lo attiva?
$ post = $ facebook-> api ("/ $ user1/feed", "POST", $ params); oppure
$ post = $ facebook-> api ("/ $ user2/feed", "POST", $ params); eccetera...?

Grazie per la consulenza

<?php 

require 'src/facebook.php'; 
$app_id = 'yourappid'; 
$app_secret = 'yourappsecret'; 
$app_namespace = 'appname'; 
$app_url = 'https://apps.facebook.com/' . $app_namespace . '/'; 
$scope = 'email,publish_actions'; 


// Init the Facebook SDK 
$facebook = new Facebook(array(
'appId' => $app_id, 
'secret' => $app_secret, 
)); 



// Get the current user 
$user = $facebook->getUser(); 

// If the user has not installed the app, redirect them to the Auth Dialog 
if (!$user) { 
    $loginUrl = $facebook->getLoginUrl(array(
    'scope' => $scope, 
    'redirect_uri' => $app_url, 
)); 

    print('<script> top.location.href=\'' . $loginUrl . '\'</script>'); 

    } 


    else { 

     try { 
     $params = array(
      'message'  => "your message", 
      'name'   => "hello world", 
      'description' => "hello world", 
      'link'   => "hello world", 
      'picture'  => "hello world", 
     ); 

     $post = $facebook->api("/$user/feed","POST",$params); 

     echo ""; 

    } 
     catch (FacebookApiException $e) { 
     $result = $e->getResult(); 
    } 

    } 

?> 
+0

E quali sono i tuoi problemi con il codice sopra oltre a quello che stai chiedendo alla comunità di programmarlo per te? –

+0

è possibile creare uno script che lo attivi? $ post = $ facebook-> api ("/ $ user1/feed", "POST", $ params); oppure $ post = $ facebook-> api ("/ $ user2/feed", "POST", $ params); eccetera...? –

risposta

4

Per risolvere il problema, voglio condividere il mio codice con voi. questo ha funzionato per me.

È necessario solo scrivere un ciclo per selezionare tutti gli ID utenti dal database.

<?php 

    //// publish as status 

    //// publish post to users 


     require_once("facebook.php"); 


     $app_id = "xxxxxxxxxxx"; 
     $app_secret = "xxxxxxxxxxxxxx"; 
     $my_url = "http://t.xxxxx.net/facebook/publish.php/"; // refer number 

    /// 
     $config = array(); 
     $config['appId'] = 'xxxxxxxx'; 
     $config['secret'] = 'xxxxxxxxxxxx'; 
     $config['fileUpload'] = false; // optional 

     $facebook = new Facebook($config); 
     /// 

    //// 

     function getAccessToken() { 
     if ($this->accessToken !== null) { 
      return $this->accessToken; 
     } 

     $this->setAccessToken($this->getApplicationAccessToken()); 
     $user_access_token = $this->getUserAccessToken(); 
     if ($user_access_token) { 
      $this->setAccessToken($user_access_token); 
     } 

     return $this->accessToken; 
     } 

     function getApplicationAccessToken() { 
     return $this->appId.'|'.$this->appSecret; 
    } 


    /////////////////////////////// Update status Function 
    //xxxxxxxx 
    $session = $facebook->getUser(); 



    // New SDK 
    $facebook->api (array(
     'method' => 'users.setStatus', 
    'status' => 'Hi 
this new status by my app 

    ', 
     'uid' => '21511',/// user_id 
     'session'=>$session, 
    )); 


    ?> 
+1

Grazie mille :) Ma dopo aver letto un po 'su StackOverflow, ho visto questo post: http://stackoverflow.com/a/15948611/2466312 Quindi penso che la tua (buona) soluzione non funzionerà più:/?? –

+1

Funziona ancora, grazie –