500 Ошибка сервера при использовании API Foursquare - PullRequest
0 голосов
/ 15 июля 2011

Я использую php-foursquare библиотека для вызовов API Foursquare.

Это мой 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;
    }

Ответы [ 2 ]

1 голос
/ 01 августа 2013

Я не использую php-foursquare, но я столкнулся с аналогичной проблемой при использовании Guzzle для подключения к конечным точкам REST 4sq.

Оказывается, что запрос приведет к необработанному исключению, если вы неОберните его в блок try catch, и он получит что-то отличное от заголовка 200.Я не мог понять, почему я получаю ошибку 500, но когда я захватил и распечатал исключение, он показал, что Foursquare возвращает 401 с гораздо более информативным сообщением.В моем случае URL перенаправления имел опечатку.

try {
$result = $this->GET($this->TokenUrl,$params);
} catch (Exception $e) {
 echo $e->getMessage();
}    
0 голосов
/ 15 июля 2011

Ну, вот в чем проблема. У вас нет никакого контроля над серверами 4square, поэтому у вас недостаточно информации, чтобы об этом догадаться. Я бы сделал две вещи:

  1. Google вызов API, который вы используете, и посмотреть, является ли это общей проблемой с общим ответом
  2. Email 4square - их сервер выдает сообщение об ошибке без полезной информации.
...