2011-07-14 34 views
0

我正在使用php-foursquare庫進行Foursquare API調用。使用Foursquare API時的500服務器錯誤

這是我的index.php

require_once("FoursquareAPI.class.php"); 

$client_key = "blabla"; 
$client_secret = "blabla"; 
$redirect_uri = "http://localhost/4kare/index.php"; 
// ($redirected_uri equals to registered callback url) 

    // Load the Foursquare API library 
    $foursquare = new FoursquareAPI($client_key,$client_secret); 

    // If the link has been clicked, and we have a supplied code, use it to request a token 
    if(array_key_exists("code",$_GET)){ 
      // example $_GET['code'] = FJRW1Z5TZ3H0E3Y2WN4Q0UPSH1PEIDADTZDHYKVG32DJTH2E 
     $token = $foursquare->GetToken($_GET['code'],$redirect_uri); 
    } 

    // If we have not received a token, display the link for Foursquare webauth 
    if(!isset($token)){ 
     echo "<a href='".$foursquare->AuthenticationLink($redirect_uri)."'>Connect to this app via Foursquare</a>"; 
    // Otherwise display the token 
    }else{ 
     echo "Your auth token: $token"; 
    } 

但爲gettoken()方法返回500服務器錯誤。這是GetToken()方法的源代碼:

public function GetToken($code,$redirect){ 
     $params = array("client_id"=>$this->ClientID, 
         "client_secret"=>$this->ClientSecret, 
         "grant_type"=>"authorization_code", 
         "redirect_uri"=>$redirect, 
         "code"=>$code); 
     $result = $this->GET($this->TokenUrl,$params); 
     $json = json_decode($result); 
     $this->SetAccessToken($json->access_token); 
     return $json->access_token; 
    } 
+0

我想你應該做更多的調試。你能和我們分享完整的CURL錯誤和端點URL嗎? –

+0

@ahmet alp巴爾幹,請再次檢查。 – Eray

+0

這還不夠。你應該跟蹤$ this-> GET方法等,以查看由foursquare庫準備的確切的HTTP查詢。 4sq api已啓動並正在運行。問題可能出在你的認證邏輯或php-foursquare庫本身。 –

回答

0

嗯,這是問題所在。你對4方的服務器沒有任何控制權,所以你沒有足夠的信息去猜測這個問題。我會做兩件事情:

  1. 谷歌的API調用使用的是看它是否有commmon答案
  2. 電子郵件4square一個共同的問題 - 這是他們的服務器吐出,沒有有用信息的錯誤消息。
+0

4SQ服務器狀態正常。只需使用Google Maps API的GeoLocate方法即可。最近我沒有使用這種方法。我已經郵寄到4sq。 – Eray

1

我沒有使用php-foursquare,但是在使用Guzzle連接到4sq REST端點時遇到了類似的問題。

事實證明,如果您沒有將它封裝在try catch塊中,並且它獲得與200頭不同的東西,那麼請求將導致未處理的異常。我無法理解我爲什麼會收到錯誤500,但是當我捕獲並打印出異常時,它顯示Foursquare返回的401帶有更多信息的消息。就我而言,重定向網址存在拼寫錯誤。

try { 
$result = $this->GET($this->TokenUrl,$params); 
} catch (Exception $e) { 
echo $e->getMessage(); 
}