2016-04-07 11 views
1

Ich mache ein Skript von einem Cronjob ausgeführt werden.GET Json mit Authentifizierung API-Schlüssel

Es wird angenommen, um einige Json Bestellungen zu holen und zu verarbeiten.

Mein Skript im Moment wie folgt aussieht:

$json_string = '/admin/orders/7109.json'; 
$real_url = "https://my-store.myshopify.com{$json_string}"; 
$user = 'my-user'; 
$pass = 'my-pass'; 

$ch = curl_init($real_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); 

$result = json_decode(curl_exec($ch),true); 
curl_close($ch); 

file_put_contents(__DIR__ . '/../debug/tracker_test.txt', print_r($result,true)); 

ich dies in den Code-Datei geschrieben bekommen sogar tho meine Anmeldeinformationen korrekt sind.

Array 
(
    [errors] => [API] Invalid API key or access token (unrecognized login or wrong password) 
) 

Fehle ich etwas?

Edit: Im privaten Apps Abschnitt Shopify es ein Beispiel-URL-Format gibt:

https://apikey:[email protected]/admin/resource.json 

So, jetzt das Skript sieht wie folgt aus:

$json_url = 'https://my-api-key:[email protected]/admin/orders.json'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $real_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); 

$result = json_decode(curl_exec($ch), true); 
curl_close($ch); 

aber ich bin noch immer die gleiche Error.

+0

gut aussieht, würde ich sagen .. versuchen, den Benutzernamen und das Passwort wie folgt an: „$ username: $ password“ und die URL wie folgt senden: curl_setopt ($ ch, CURLOPT_URL, $ url); – dquinonez

+0

Du meinst '" {$ username}: {$ password} "'? – Onilol

+0

Versuchen Sie außerdem, die Ausgabe von curl_exec ($ ch) zuerst in eine Variable zu bringen und dann diese Variable zu codieren. Eine andere Sache könnte sein, dass du vielleicht auch eine Art Token senden musst. wie hier http://stackoverflow.com/questions/30426047/correct-way-to-set-bearer-token-with-curl – dquinonez

Antwort

0

Es stellte sich heraus, dass ich einen Syntaxfehler hatte. Ich habe vergessen, die CURLOPT_URL mit der neuen URL-Variable zu aktualisieren.

Es endete wie folgt aussehen:

$json_url = 'https://my-api-key:[email protected]/admin/orders.json'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $json_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); 

$result = json_decode(curl_exec($ch), true); 
curl_close($ch);