2

Maps Engine (現在は My Maps と呼ばれる) で現在のユーザーのレイヤーのリストを取得するために、App Engine から Google の API PHP クライアント ライブラリを使用して、oAuth 2.0 経由で認証しています。

私は次のコードtest.phpを使用しています:

<?php
session_start();

require_once 'Google/Client.php';
require_once 'Google/Service/MapsEngine.php';

$client_id = 'zzzzzzzzzzzzzzzzzzzzzzzzzzz';
$client_secret = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];

$client = new Google_Client();
$client->setAccessType('online');
$client->setApplicationName('myappname');
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setDeveloperKey('rrrrrrrrrrrrrrrrrrrrrrrrrrrrr'); 
$client->setScopes("https://www.googleapis.com/auth/mapsengine");
$mymaps_service = new Google_Service_MapsEngine($client);

if (isset($_REQUEST['logout'])) 
{
    unset($_SESSION['access_token']);
}

if (isset($_GET['code']))
{
    $client->authenticate($_GET['code']);
    $_SESSION['access_token'] = $client->getAccessToken();
    $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
    header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}

echo "<html><body>";

if (isset($_SESSION['access_token']) && $_SESSION['access_token'])
{
    $client->setAccessToken($_SESSION['access_token']);
    echo "<p>Access token set OK!</p>";
}
else
{
    $authUrl = $client->createAuthUrl();
    echo "<p>Could not authenticate.</p>";
    echo "<p><a href='$authUrl' target=_blank>Try to authenticate by following this URL</a></p>";
}

if ($client->getAccessToken())
{
    $_SESSION['access_token'] = $client->getAccessToken();
    echo "<h1>Your Maps Engine Layer List:</h1>";
    $layers = $mymaps_service->layers->listLayers(array());
    var_dump($layers);
}
else
{
    echo "<p>Could not get the Access Token.</p>";
}

echo "</body></html>";
?>

プロジェクト、クライアント ID、シークレット、マップ エンジンの開発者キー (単純な API アクセス キー)、マップ エンジンのレイヤー (公開されている) を作成し、アプリに接続できる IP もセットアップしました。 app エンジン、および test.php が認証できる IP 範囲。

test.php をデプロイし、ブラウザーからログアウトして test.php をロードすると、すぐに次のメッセージが表示されます。 Google のアカウント選択ページを表示しています。

次に、[Try to authentication by following this URL] リンクをクリックすると、Google のアカウント選択ページが開きます。マップ エンジンのレイヤーを所有していることがわかっているアカウントのユーザーとパスワードを入力すると、「アクセス トークン セット OK! あなたのマップ エンジン レイヤー リスト:」というメッセージが表示されます。

しかし、レイヤ リストは表示されません...あたかも $layers 変数が listLayers メソッドから何も取得しないかのように。

developers.google.comでデモを使用してリストを取得しようとすると、レイヤーのリストを取得できます。

Maps Engine でユーザーがアクセスできるレイヤのリストを取得するには、コードで何を変更すればよいですか?

4

0 に答える 0