2012-07-31 22 views
9

Uso el excelente Parse como almacén de datos, pero necesito acceder a él a través de PHP (como un detalle irrelevante, tengo que acceder a él a través de PHP para poder para raspadores de Facebook para reconocer etiquetas generadas dinámicamente en mi página).API REST de Parse y solicitudes de Curl de PHP: cómo

Parse tiene una API de reposo e instrucciones básicas sobre cómo usarlas. Por ejemplo, para recuperar un objeto:

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/

Por desgracia, no tengo ni idea de cómo integrar esto con ejemplos PHP Curl que he visto en línea. Encuentro:

curl_setopt($ch, CURLOPT_USERPWD,

..que se trate. Como podría:

curl_setopt($ch, CURLOPT_URL, $Url);

pero podría estar muy lejos. Lamento mucho no poder resolver esto por mi cuenta, pero creo que esta sigue siendo una pregunta válida, ya que es muy confusa para aquellos que no han utilizado Curl/PHP anteriormente. Básicamente - Busco información tan básica como dónde poner el ejemplo citado de los documentos Parse ...

Gracias de antemano

EDIT:

Hola a todos, aquí está la solución como yo configurado. Gracias a debianek por ayudarme a ir en la dirección correcta.

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;    

..y así sucesivamente. Espero que ayude.

+0

Hola, usted ha dicho que diste cómo usarlo. Podría publicar aquí la solución –

+0

en la edición. Perdón por el retraso. –

+0

La solución debe estar en una respuesta separada, * no * en la pregunta en sí. Quítalo de aquí y ponlo en una nueva respuesta. – Jamal

Respuesta

6

ponerlo en cabeceras

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

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

Muchas gracias. Con un poco de ajuste extra conseguí que funcionara. Editaré mi publicación original para reflejar esto cuando tenga una solución completa. Lo que lleva a mi siguiente subpregunta. Tengo, creo, un objeto JSON en mi PHP. La salida de texto HTTP_HEADER confirma que se obtuvo correctamente. $ data = curl_exec ($ handle); $ array = json_decode ($ data, true); Cuando trato de hacer eco de $ data en mi cuerpo html, sin embargo, obtengo "error: no autorizado" y echo-out $ array se hace eco de la palabra "array". Probar $ array ['objectId'] o $ array [0] .objectId devuelve un espacio en blanco. Cualquier otra ayuda masivamente apreciada ... –

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 de esta función para todos inserción objeto, el objeto que debe ser creado como matriz asociativa con el índice correcto

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 ; 

}