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=?を追加してみてください。あなたが構築しているURLの最後に。これにより、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 を使用してクロス ドメイン リクエストを管理するには、コールバックが必要であり、クライアント エンドだけでなくサーバーでも処理する必要があります。

また、現時点では応答コード 200 が返されているため、firebug または同様のツールを使用して応答を確認してください。

ここで、正しい方法を導くことができる2つのスレッドについて言及しています

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 に答える