2012-11-23 17 views
5

Ehi, ho iniziato a imparare l'API di foursquare, ma sono bloccato a ottenere un token di accesso. Ecco una parte del codice che ho trovato in SO.Come ottenere risposta JSON utilizzando curl

 // build url 
    $url = 'https://foursquare.com/oauth2/access_token'; 
    $url .= '?client_id='.CLIENT_ID; 
    $url .= '&client_secret='.CLIENT_SECRET; 
    $url .= '&grant_type=authorization_code'; 
    $url .= '&redirect_uri=**********/callback'; //change to your 4sq callback 
    $url .= '&code='.$code; 

    // call to https://foursquare.com/oauth2/access_token with $code 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $result = curl_exec($ch); 

Tuttavia, questo non ha funzionato, quindi ho cercato di trovare l'errore. Prima hai fatto eco a $ url e fatto clic su quel link manualmente. Ha funzionato, Foursquare mi ha restituito un token di accesso in formato JSON. Quindi il problema è nella parte arricciata del codice.

Riesci a trovare il mio errore? e, cosa ancora più importante, mi puoi suggerire alcune risorse per studiare sul ricciolo?

EDIT: Ho fatto un var_dump ($ result) e l'uscita è 'booleano false'

risposta

6

Il problema è http * s *, prova ad aggiungere questi:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
+0

Sì! Ho provato echo curl_error ($ ch) poco prima della tua risposta, e l'output riguardava la verifica SSL e stavo andando a cercarlo. La risposta è più veloce della domanda ^^ – Hasan

+0

e ha funzionato. grazie – Hasan

2

Se si tratta di un POST una richiesta, allora questo è il modo corretto di farlo:

$body.='client_id='.CLIENT_ID etc. 
$c = curl_init(); 
curl_setopt($c, CURLOPT_URL, $url); 
curl_setopt ($c, CURLOPT_POST, true); 
curl_setopt ($c, CURLOPT_POSTFIELDS, $body); 
curl_setopt ($c, CURLOPT_RETURNTRANSFER, true); 
$page = curl_exec ($c); 
curl_close ($c); 
+0

"" L'utilizzo di indefinito CURLOPT_GET costante - assunto 'CURLOPT_GET' "" – Hasan

+0

Sì, mi dispiace fatto non utilizzare il metodo GET per un po ', controllare questo http://codular.com/curl-with-php – cezar

+0

Potrebbe anche essere necessario impostare l'intestazione su json curl_setopt (CURLOPT_HTTPHEADER,' Content-type: application/json ') ; – cezar

Problemi correlati