2016-05-11 8 views
7

Ich experimentiere mit SammyK/LaravelFacebookSdk. Der Versuch, diese Zeile aus Beispiel auszuführen: $response = Facebook::get('/me?fields=id,name,email', 'user-access-token');Argument 3 übergeben an GuzzleHttp Client :: request() muss vom Typ Array sein, String gegeben

wiederum die /var/www/vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookGuzzleHttpClient.php line 61 läuft

public function send($url, $method, $body, array $headers, $timeOut) 
{ 
    $options = [ 
     'headers' => $headers, 
     'body' => $body, 
     'timeout' => $timeOut, 
     'connect_timeout' => 10, 
     'verify' => __DIR__ . '/certs/DigiCertHighAssuranceEVRootCA.pem', 
    ]; 
    $request = $this->guzzleClient->createRequest($method, $url, $options); 

    try { 
     $rawResponse = $this->guzzleClient->send($request); 
    } catch (RequestException $e) { 
     $rawResponse = $e->getResponse(); 

     if ($e->getPrevious() instanceof RingException || !$rawResponse instanceof ResponseInterface) { 
      throw new FacebookSDKException($e->getMessage(), $e->getCode()); 
     } 
    } 

    $rawHeaders = $this->getHeadersAsString($rawResponse); 
    $rawBody = $rawResponse->getBody(); 
    $httpStatusCode = $rawResponse->getStatusCode(); 

    return new GraphRawResponse($rawHeaders, $rawBody, $httpStatusCode); 
} 

Das /var/www/vendor/guzzlehttp/guzzle/src/Client.php line 87

public function __call($method, $args) 
{ 
    if (count($args) < 1) { 
     throw new \InvalidArgumentException('Magic request methods require a URI and optional options array'); 
    } 

    $uri = $args[0]; 
    $opts = isset($args[1]) ? $args[1] : []; 

    return substr($method, -5) === 'Async' 
     ? $this->requestAsync(substr($method, 0, -5), $uri, $opts) 
     : $this->request($method, $uri, $opts); 
} 

Diese methond nennt interpretiert Eingang als array('method' => 'createRequest', 'uri' => 'GET'))

Ändern Index scheint um den Fehler zu korrigieren (obwohl othe r Probleme araise)

$uri = $args[1]; 
$opts = isset($args[2]) ? $args[2] : []; 

Aber da ist es eine sehr schlechte Praxis andere Pakete zu bearbeiten, wie soll ich diesen Fehler zu korrigieren?

+0

Hallo Edmund, nicht sicher hast du schon die lösung dafür gefunden? Ich lief hier in das gleiche Problem :( –

+0

@KeithYeoh Ich habe das Plugin gedumpt und entweder selbst Code geschrieben oder verwendet Socialte (Laravels offiziellen Plugin) + einige custome code.Ich erinnere mich nicht wirklich.Ich erinnere mich nur an das Gefühl, dass meine Lösung fühlte viel sauberer und einfacher als das plugin –

Antwort

10

Ich habe das gleiche Problem. Ändern von Indizes funktioniert nicht für mich, aber ich habe eine Problemumgehung gefunden. Die Installation der php-curl-Erweiterung schaltet einen ganzen Workflow durch cURL, so dass das Problem verschwunden ist.

+0

Duh! Danke für das Sparen mir Zeit. – alloyking

+0

OMG. Sie wirklich sparen meine Zeit. Nach 5 Tagen auf der Suche nach dieser Antwort fand ich hier. Tks man. – Artur

+0

Hallo Leute, Entschuldigung neu in Xampp oder PHP, Wie komme ich dazu, die oben genannte Lösung zu machen? – Vivian

0

Durch Facebook SDK 5.x Verwendung guzzle Version 5. So ist die guzzle Bibliothek Herabstufung Umgehung

$ composer require guzzlehttp/guzzle:~5.0 
0

Verwenden

new \GuzzleHttp\Psr7\Request($method, $url, $headers, ..) 

statt

$this->guzzleClient->createRequest 
Verwandte Themen