0

我对此进行了搜索,但与此相关的大多数问题都是针对其他服务的 API 的。

我正在构建一个 API,允许游戏开发人员从我的数据库中发送和检索用户信息。

我终于能够将 API 放在一起,但现在我需要调用 API。

第一次当游戏启动时,它会向我们发送游戏开发者密钥他们的开发者 ID 和游戏 ID。

//Game loads, get developer key, send token and current high score

// == [ FIRST FILTER - FILTER GET REQUEST ] == //
$_GET = array_map('_INPUT', $_GET); // filter all input


// ====================================== //
// ============[ ACTION MENU ]=========== //
// ====================================== //

if(!empty($_GET['action']) && !empty($_GET['user']) && !empty($_GET['key']) &&  !empty($_GET['email']) && !empty($_GET['password'])): // if key data exists

switch($_GET['action']):

//athenticate game developer return and high score
case 'authenticate':

    $db = new PDO('mysql:host=localhost;dbname=xxxx', 'xxxx', 'xxxx');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

    $st = $db->prepare("SELECT * FROM `game_developers_games` WHERE `id` = :gameid AND `developer_id`=:user AND `key`= :key AND `developer_active` = '1'"); // need to filter for next auction
    $st->bindParam(':user', $_GET['user']); // filter
    $st->bindParam(':key', $_GET['key']); // filter
    $st->execute();
    $r = $st->fetch(PDO::FETCH_ASSOC);

    if($st->rowCount() == 0):

        $return = array('DBA_id'=>'0000');
        echo json_encode($return);

    else:

        $token = initToken($_GET['key'],$_GET['user']);

        if($token == $r['API_Token']):

            $return = array(
            'DBA_id'=>$token,
            'DBA_servertime'=>time(),
            'DBA_highscore'=>$r['score'],
            );

            echo json_encode($return);                

        endif;

    endif;

    break;

这是游戏开发者必须添加到游戏中以在游戏加载时获取数据的脚本。在另一个stackoverflow问题上找到了这个,但它不起作用。

 $.getJSON("https://www.gamerholic.com/gamerholic_api/db_api_v1.php? user=1&key=6054abe3517a4da6db255e7fa27f4ba001083311&gameid=1&action=authenticate",           function () {
        alert("aaa");

              });
4

2 回答 2

0

尝试添加&callback=? 到您正在构建的网址的末尾。这将启用 cors 接受的 jsonp。

$.getJSON("https://www.gamerholic.com/gamerholic_api/db_api_v1.php?user=1&key=6054abe3517a4da6db255e7fa27f4ba001083311&gameid=1&action=authenticate&callback=?",           function () {
   alert("aaa");
});
于 2012-11-14T18:55:44.617 回答
0

根据跨域来源策略,您无法使用 jquery getJson 函数访问跨域 url。

使用 json 管理跨域请求需要回调,并且需要在服务器端和客户端上进行处理。

还要确保使用 firebug 或类似工具检查响应,因为目前它返回的响应代码为 200。

我在这里提到两个线程可以指导您正确的方式

jquery getJSON 跨域问题

http://www.fbloggs.com/2010/07/09/how-to-access-cross-domain-data-with-ajax-using-jsonp-jquery-and-php/

于 2012-11-15T05:40:51.207 回答