2012-07-31 16 views
9

Sto utilizzando l'eccellente Parse come archivio dati, ma ho bisogno di accedervi tramite PHP (come un dato forse irrilevante di dettagli - Devo accedervi tramite PHP in ordine per gli scraper di Facebook per riconoscere i tag generati dinamicamente nella mia pagina).Richieste REST API Parse e PHP Curl - come

Parse ha un'API Rest e istruzioni di base su come usarli. Ad esempio, per recuperare un oggetto:

curl -X GET \
-H "X-Parse-Application-Id: [My application ID]" \
-H "X-Parse-REST-API-Key: [My Parse Rest API key]" \
https://api.parse.com/1/classes/moods/

Purtroppo, non ho idea di come integrare questo con esempi PHP Curl che ho visto on-line. Raccolgo:

curl_setopt($ch, CURLOPT_USERPWD,

.. essere coinvolti. Come potrebbe:

curl_setopt($ch, CURLOPT_URL, $Url);

ma potrei essere lontano. Sono davvero dispiaciuto di non essere stato in grado di capirlo da solo - ma penso che questa sia ancora una domanda valida in quanto è molto confusa per coloro che non hanno mai usato Curl/PHP. In sostanza - sto cercando informazioni di base come dove mettere l'esempio citato dalla documentazione Parse ...

Grazie in anticipo

EDIT:

Ciao a tutti, ecco la soluzione, come ho configurato. Grazie a debianek per avermi fatto andare nella giusta direzione.

if ($_GET['id']) { 
$imageId = $_GET['id']; 
MyApplicationId = '[ID]'; 
$MyParseRestAPIKey = '[API Key]'; 
$url = 'https://api.parse.com/1/classes/images/'.$imageId; 

$headers = array(
    "Content-Type: application/json", 
    "X-Parse-Application-Id: " . $MyApplicationId, 
    "X-Parse-REST-API-Key: " . $MyParseRestAPIKey 
); 

    $handle = curl_init(); 
curl_setopt($handle, CURLOPT_URL, $url); 
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 

    $data = curl_exec($handle); 
curl_close($handle); 

$array = json_decode($data); 

$title = $array->title;    

.. e così via. Spero possa aiutare.

+0

Ciao, hai detto che capito come usarlo. Potresti postare qui la soluzione –

+0

nella modifica. Scuse per il ritardo. –

+0

La soluzione dovrebbe essere in una risposta separata, * non * nella domanda stessa. Rimuovilo da qui e inseriscilo in una nuova risposta. – Jamal

risposta

6

metterlo in intestazioni

$headers = array(
    "X-Parse-Application-Id: $MyApplicationId", 
    "X-Parse-REST-API-Key: $MyParseRestAPIkey" 
); 

$handle = curl_init(); 
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers); 
+0

Grazie mille. Con un po 'di tweaking extra ho ottenuto questo lavoro. Modificherò il mio post originale per riflettere questo quando avrò una soluzione completa. Il che porta alla mia prossima sotto-domanda. Ho, credo, un oggetto JSON nel mio PHP. L'output di testo HTTP_HEADER conferma che è stato recuperato correttamente. $ data = curl_exec ($ handle); $ array = json_decode ($ data, true); Quando provo a echo $ dati nel mio corpo html, tuttavia, ottengo "errore: non autorizzato" e echo-out $ array fa eco alla parola "array". Provando $ array ['objectId'] o $ array [0] .objectId restituisce uno spazio vuoto. Qualsiasi ulteriore aiuto massivamente apprezzato .. –

4
<?php 
$url = 'https://api.parse.com/1/classes/GameScore'; 
$appId = 'YOUR_APP_ID'; 
$restKey = 'YOUR_REST_KEY'; 
$headers = array( 
    "Content-Type: application/json", 
    "X-Parse-Application-Id: " . $appId, 
    "X-Parse-REST-API-Key: " . $restKey 
); 
$objectData = '{"name":"Adarsh", "age":"26"}'; 
$rest = curl_init(); 
curl_setopt($rest,CURLOPT_URL,$url); 
curl_setopt($rest,CURLOPT_POST,1); 
curl_setopt($rest,CURLOPT_POSTFIELDS,$objectData); 
curl_setopt($rest,CURLOPT_HTTPHEADER,$headers); 
curl_setopt($rest,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($rest,CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($rest); 
echo $response; 
print_r($response); 
curl_close($rest); 
?> 
1

uso questa funzione per tutti Inserisci oggetto, l'oggetto che deve essere creato come array associativo con indice corretto

function insertObject($classname,$object){ 
$ appId="xxxxx"; 
    $restKey="xxxx" 
    $url = 'https://api.parse.com/1/classes/'.$classname; 
    $rest = curl_init(); 
     curl_setopt($rest, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($rest, CURLOPT_FRESH_CONNECT, FALSE);//use cache if available 
     curl_setopt($rest, CURLOPT_TIMEOUT, 10); //10 sec timeout 
     curl_setopt($rest,CURLOPT_URL,$url); 
     curl_setopt($rest,CURLOPT_PORT,443); 
     curl_setopt($rest,CURLOPT_POST,1); 
     curl_setopt($rest,CURLOPT_POSTFIELDS, json_encode($object)); 
     curl_setopt($rest,CURLOPT_HTTPHEADER, 
      array("X-Parse-Application-Id: " . $appId, 
       "X-Parse-REST-API-Key: " . $restKey, 
       "Content-Type: application/json")); 

     curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);//to avoid certificate error 
     $response = curl_exec($rest); 
     echo $response ; 

}