Обновить Google широту - PullRequest
       10

Обновить Google широту

3 голосов
/ 19 августа 2011

Я построил GPS-трекер, который обновляет домашнюю страницу с ее позициями (и изображениями с веб-камеры).

Как мне обновить текущее местоположение пользователя Google Локатора? Было бы неплохо использовать простой скрипт bash, запускающий curl или c-программу!

Обновление: Мне также нужно знать, как выполнить аутентификацию.

Ответы [ 3 ]

8 голосов
/ 21 августа 2011

Когда вы говорите, что хотите «обновить» пользователя Локатора Google, вы хотите «обновить его текущее местоположение», верно?

Для некоторых служб Google Google настроит проект API Google на Код Google . В этом случае вам повезло, потому что есть API Google Локатора, который описывает различные действия, которые вы можете выполнять с помощью интерфейса REST (REST всегда совместим с curl). Вот их пример кода для обновления местоположения пользователя:

POST https://www.googleapis.com/latitude/v1/currentLocation?key=INSERT-YOUR-KEY
/* Authorization header here */
Content-Type: application/json

{
  "data": {
    "kind":"latitude#location",
    "latitude":37.420352,
    "longitude":-122.083389,
    "accuracy":130,
    "altitude":35
    }
}

Веб-сайт Google Latitude API содержит подробные сведения. Вам нужно будет получить ключ API, прежде чем вы сможете начать писать код, и вам нужно будет выполнить подтверждение подлинности OATH 2.0, прежде чем вы сможете на самом деле обновить местоположение пользователя.

Обновление

Если вы не хотите писать код аутентификации самостоятельно, Google предоставляет несколько предварительно упакованных клиентских библиотек в .NET, GWT, Java, PHP, Python и Ruby . Каждый из них поддерживает полный API, включая аутентификацию.

У Google есть полный пример, который использует свой API Java для аутентификации. Следуйте инструкциям на http://samples.google -api-java-client.googlecode.com / hg / latitude-json-oauth-sample / инструкция.html? R = default и попробуйте.

4 голосов
/ 27 марта 2012

Это то, что вы ищете?

В консоли API обязательно запрашивайте доступ к Локатору на вкладке Службы.Этот скрипт запросит ключ API, идентификатор клиента, секрет клиента, а затем запустит браузер для входа в систему (вам может потребоваться настроить эту строку для вашей системы, см. Ниже)После того, как вы вошли в систему и предоставили доступ к своему приложению, вы получите код, который вы вставите в ответ на запрос сценария.Затем вы введете свой широту / долготу / высоту, которая будет опубликована в сервисе.

#!/bin/sh

LoginUrl="https://accounts.google.com/o/oauth2/auth"
TokenUrl="https://accounts.google.com/o/oauth2/token"
RedirectUri="urn:ietf:wg:oauth:2.0:oob"
Scope="https://www.googleapis.com/auth/latitude.all.best https://www.googleapis.com/auth/latitude.all.city https://www.googleapis.com/auth/latitude.current.best https://www.googleapis.com/auth/latitude.current.city"
CurlocUrl="https://www.googleapis.com/latitude/v1/currentLocation"

read -s -p "Enter your API Key: " APIKey
echo ""

read -s -p "Enter your Client ID: " ClientId
echo ""

read -s -p "Enter your Client Secret: " ClientSecret
echo ""

# this next line may need to be tweaked in order to launch the browser
open "${LoginUrl}?response_type=code&client_id=${ClientId}&redirect_uri=${RedirectUri}&scope=${Scope}"

read -s -p "Log in, grant permission, enter the code: " Code
echo ""

resp=`curl -is "${TokenUrl}" -d "code=${Code}&client_id=${ClientId}&client_secret=${ClientSecret}&redirect_uri=${RedirectUri}&grant_type=authorization_code"`

AccessToken=`echo "${resp}" | sed -e '/access_token/ !d; s/ *"access_token" *: *"\(.*\)",*/\1/'`
TokenType=`echo "${resp}" | sed -e '/token_type/ !d; s/ *"token_type" *: *"\(.*\)",*/\1/'`
ExpiresIn=`echo "${resp}" | sed -e '/expires_in/ !d; s/ *"expires_in" *: *"\(.*\)",*/\1/'`
RefreshToken=`echo "${resp}" | sed -e '/refresh_token/ !d; s/ *"refresh_token" *: *"\(.*\)",*/\1/'`

echo "Enter the location details." 
read -p "Latitude in degrees (nn.nnnn): " latitude
read -p "Longitude in degrees (nn.nnnn): " longitude
read -p "Elevation in feed (nnnn): " altitude

curl -is "${CurlocUrl}" -H "Content-Type: application/json" -H "Authorization: OAuth ${AccessToken}" -d "{ 'data': { 'kind': 'latitude#location', 'latitude': '${latitude}', 'longitude': '${longitude}', 'accuracy': 0, 'altitude': ${altitude} } }"
2 голосов
/ 30 марта 2012

Существует запись о том, как использовать Curl со службами Google:

http://code.google.com/apis/gdata/articles/using_cURL.html#other-tools

После этого первым шагом будет:

curl ^
  -k ^
  --proxy <your_proxy_here> ^
   https://www.google.com/accounts/ClientLogin ^
   --data-urlencode Email=hellonico@gmail.com ^
   --data-urlencode Passwd=<cant_tell_you> ^
   -d accountType=GOOGLE ^
   -d source=Google-cURL-Example ^
   -d service=lh2

Этовозвращает вам что-то вроде:

SID=<long_string_1>
LSID=<long_string_2>
Auth=<long_string_3>

Теперь вы можете использовать этот токен непосредственно для аутентификации и доступа к Службам Google.Доступ к Picassa в режиме чтения будет выглядеть следующим образом:

curl ^
 --silent ^
 --header "Authorization: GoogleLogin auth=<long_string_3>" ^    
 "http://picasaweb.google.com/data/feed/api/user/default"

И для обновления данных, используя PUT или POST:

curl ^
  --silent ^
  --request POST ^
  --data-binary "@template_entry.xml" ^
  --header "Content-Type: application/atom+xml" ^
  --header "Authorization: GoogleLogin auth=<long_string_3" ^
  "http://picasaweb.google.com/data/feed/api/user/brad.gushue" 

То же самое относится и к Google Location, вам просто нужно запроситьсначала GoogleAPI, а затем перейдите к документации , объясняющей, как размещать данные.

POST нужно что-то вроде этого:

POST https://www.googleapis.com/latitude/v1/location?key=INSERT-YOUR-KEY
/* Authorization header here */
Content-Type: application/json

{
 "data": {
 "kind":"latitude#location",
 "timestampMs":"1274057512199",
 "latitude":37.420352,
 "longitude":-122.083389,
 "accuracy":130,
 "altitude":35
 }
}

Вот, пожалуйста.

В этом посте все знаки ^ означают EOL и используются для разделения всех этих длинных команд на несколько строк.

...