2017-07-31 59 views
0

我在我的網站實施谷歌登錄,我想訪問用戶的位置,但我無法訪問。如何使用谷歌客戶端API獲取用戶位置信息

我搜查了互聯網,但無法獲得有用的信息。

驗證碼

if (!function_exists('curl_reset')) 
    { 
     function curl_reset(&$ch) 
     { 
      $ch = curl_init(); 
     } 
    } 
    require_once __DIR__ . '/google-api-php-client-2.2.0/vendor/autoload.php'; 

    $client = new Google_Client(); 
    $client->setAuthConfig('client_secrets.json'); 
    $redirectURL = 'www.mysite.com/gmail-callback.php'; 
    $client->setRedirectUri($redirectURL); 
    $client->addScope("email"); 
    $client->addScope("profile"); 

    //$client->addScope('https://www.googleapis.com/auth/glass.location'); 

    $auth_url = $client->createAuthUrl(); 
    header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); 

回調代碼

if (!function_exists('curl_reset')) 
    { 
     function curl_reset(&$ch) 
     { 
      $ch = curl_init(); 
     } 
    } 

    require_once __DIR__ . '/google-api-php-client-2.2.0/vendor/autoload.php'; 

    $client = new Google_Client(); 
    $client->setAuthConfig('client_secrets.json'); 

    if(isset($_GET['code'])){ 
     $client->authenticate($_GET['code']); 
     $_SESSION['gmail_access_token'] = $client->getAccessToken(); 
    }elseif(!isset($_GET['code'])){ 
     $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/mysuite'; 
     header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
    } 

    if(!empty($_SESSION['gmail_access_token'])){ 
     $client->setAccessToken($_SESSION['gmail_access_token']); 
     $service = new Google_Service_Oauth2($client); 
     $user = $service->userinfo->get(); 
     print_r($user); //printing user information, but no user location 
    } 

回答

0

您可以使用谷歌縱橫服務。 (由谷歌提供)(Google_LatitudeService.php

示例代碼:

<?php 
/* 
* Copyright 2011 Google Inc. 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 
session_start(); 

require_once '../../src/Google_Client.php'; 
require_once '../../src/contrib/Google_LatitudeService.php'; 

$client = new Google_Client(); 
// Visit https://code.google.com/apis/console to generate your 
// oauth2_client_id, oauth2_client_secret, and to register your oauth2_redirect_uri. 
// $client->setClientId('insert_your_oauth2_client_id'); 
// $client->setClientSecret('insert_your_oauth2_client_secret'); 
// $client->setRedirectUri('insert_your_oauth2_redirect_uri'); 
$client->setApplicationName("Latitude_Example_App"); 
$service = new Google_LatitudeService($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)); 
} 

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { 
    $client->setAccessToken($_SESSION['access_token']); 
} else { 
    $authUrl = $client->createAuthUrl(); 
} 

if ($client->getAccessToken()) { 
    // Start to make API requests. 
    //$location = $service->location->listLocation(); 
    $currentLocation = $service->currentLocation->get(); 
    $_SESSION['access_token'] = $client->getAccessToken(); 
} 
?> 
<!doctype html> 
<html> 
<head><link rel='stylesheet' href='style.css' /></head> 
<body> 
<header><h1>Google Latitude Sample App</h1></header> 
<div class="box"> 
    <?php if(isset($currentLocation)): ?> 
    <div class="currentLocation"> 
     <pre><?php var_dump($currentLocation); ?></pre> 
    </div> 
    <?php endif ?> 

    <?php if (isset($location)): ?> 
    <div class="location"> 
     <pre><?php var_dump($location); ?></pre> 
    </div> 
    <?php endif ?> 

    <?php 
    if(isset($authUrl)) { 
     print "<a class='login' href='$authUrl'>Connect Me!</a>"; 
    } else { 
    print "<a class='logout' href='?logout'>Logout</a>"; 
    } 
    ?> 
</div> 
</body></html> 
相關問題