2

MACアドレスを使用してデバイスの経度と緯度を取得したいのですが、値が返されません。

Google Geolocation API を有効にし、課金を有効にしました。助けてください。

<?php           
        $mac = "E4:D5:3D:E4:05:BF"; 
        //encode the data in JSON   
    $wifiAccessPoints = array("macAddress"=>$mac);
    $wifiAccessPoints = json_encode($wifiAccessPoints);

    $API_key = "AIzaSyApOf.................";

        $url  = "https://www.googleapis.com/geolocation/v1/geolocate?key=$API_key";



        $client = curl_init($url);
        //send the request to resource
        curl_setopt($client, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($client, CURLOPT_HEADER, false);
        curl_setopt($client, CURLOPT_POSTFIELDS, $wifiAccessPoints);
        curl_setopt($client, CURLOPT_RETURNTRANSFER,true);

        curl_setopt($client, CURLOPT_HTTPHEADER,array("Content-type: application/json", "Content-Length".strlen($wifiAccessPoints)));

        curl_setopt($client,CURLOPT_POST,true);


        //get response from request.
        $response = curl_exec($client);

        //decode format response
        //$result = json_decode($response);
        $status = curl_getinfo($client, CURLINFO_HTTP_CODE);

        echo $status."<br>";

        echo $response."<br>";

        ?>     
4

1 に答える 1

0

返されるエラーは、リクエストが正しくフォーマットされていることを示していますが、API はそのジオロケーションを見つけることができませんでした。API ドキュメントには、結果について次のように書かれています。

理由: notFound
ドメイン: geolocation
ステータス コード: 404
説明:リクエストは有効でしたが、結果が返されませんでした。

リクエストを正常に実行しているように見えますが、Google は特定の WiFi アクセス ポイントがどこにあるかを常に教えてくれるわけではありません (すべてを知っているとは期待できません)。

ドキュメントにも次のように記載されています

要求本文の wifiAccessPoints 配列には、2 つ以上のWiFi アクセス ポイント オブジェクトが含まれている必要があります。macAddress は必須です。他のすべてのフィールドはオプションです。

アクセス ポイントが 1 つしかないようです。IP によるルックアップが正確である可能性があります。ドキュメントには、入力 JSON を再フォーマットする方法に関する豊富な情報があります。

于 2015-08-04T15:34:41.247 に答える