如何使用Google客户端API获取用户位置信息 [英] how to get user location information using google client api

查看:104
本文介绍了如何使用Google客户端API获取用户位置信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在自己的网站上实现了google登录,我想访问用户的位置,但无法访问.

I implementing google login in my site, I want to access user's location but I am not able to access.

我已经搜索了互联网,但无法获得有用的信息.

I have searched the internet but could not get useful info.

验证码

    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
    }

推荐答案

您可以使用Google谷歌纵横服务. ( Google_LatitudeService.php )

You can use google latitude service. (Google_LatitudeService.php)

示例代码(由Google提供)

Sample Code (given by google):

<?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>

这篇关于如何使用Google客户端API获取用户位置信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆