2016-10-05 4 views
2

Ich versuche Larvals Warteschlangen zu verwenden, um auf Facebook zu posten, ich habe kein Glück! Mein Code funktioniert gut ohne Warteschlangen, aber ich muss in der Lage sein, den gleichen Code mit einem que zu verwenden.Laravel Queue und auf Facebook posten

Ich erhalte diese Ausnahme in meiner Fehlgeschlagene Job Tabelle:

exception 'Exception' with message '[220] Your credentials do not allow access to this resource.' in /home/vagrant/sites/pms/vendor/thujohn/twitter/src/Thujohn/Twitter/Twitter.php:297 

mein ursprünglicher Code ein Bild zu Facebook posten wie folgt aussieht:

try { 
    $fb->setDefaultAccessToken($token); 
    $fb->post('/me/photos', [ 
     'url' => cloudinary_url("$photorequest"), 
     'caption' => $body . $userPage 
    ]); 
} catch (Facebook\Exceptions\FacebookResponseException $e) { 
    // continue to next request; 
} 

mit mir jetzt versuchen, ein zu verwenden, que, ich habe dies in meinen Jobs Ordner:

namespace PMS\Jobs; 

use PMS\Jobs\Job; 
use Illuminate\Http\Request; 
use SammyK\LaravelFacebookSdk\LaravelFacebookSdk; 
use Facebook; 
use Session; 
use PMS\Photo; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class PostToFBwithImage extends Job implements ShouldQueue { 
    use InteractsWithQueue, SerializesModels; 

    public $fb; 
    public $token; 
    public $photorequest; 
    public $userPage; 
    public $body; 

    /** 
    * Create a new job instance. 
    * 
    * @return void 
    */ 
    public function __construct($token, $photorequest, $userPage, $body) { 
     $this->token = $token; 
     $this->photorequest = $photorequest; 
     $this->userPage = $userPage; 
     $this->body = $body; 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle(LaravelFacebookSdk $fb) { 
     try { 
      $fb->setDefaultAccessToken($token); 
      $fb->post('/me/photos', [ 
       'url' => cloudinary_url("$photorequest"), 
       'caption' => $body . $userPage 
      ]); 
     } catch (Facebook\Exceptions\FacebookResponseException $e) { 
      // continue to next request; 
     } 
    } 
} 

und ruft dies in meinem Controller:

$this->dispatch(new PostToFBwithImage($token, $photorequest, $userPage, $body)); 

Ich weiß, dass ich in meiner PostToFBwithImage-Klasse etwas falsch mache, ich weiß nur nicht was?

+0

Welchen Warteschlangentreiber verwenden Sie? Und auf welche Weise funktioniert dieser Code nicht? Erhalten Sie irgendwelche Fehler? – Aron

Antwort

0

Sollte dies nicht

$fb->setDefaultAccessToken($token); 
$fb->post('/me/photos', ['url' => cloudinary_url("$photorequest"),'caption' => $body . $userPage]); 

sein, dies

$fb->setDefaultAccessToken($this->token); 
$fb->post('/me/photos', ['url' => cloudinary_url($this->photorequest), 'caption' => $this->body . $this->userPage]); 

?

Sind Sie auch sicher, dass Sie beim Erstellen des Jobs die richtigen Werte an den Konstruktor übergeben?