Pregunta

Usando ejemplos tengo este código. Funciona bien, autoriza los alcances y todo: todo:

<?php 
ini_set("display_errors",1);
error_reporting(E_ALL);
session_start(); 
set_include_path('/home/library/'.get_include_path());
require_once 'Zend/Oauth/Consumer.php'; 

$oauthOptions = array(
    'requestScheme'        => Zend_Oauth::REQUEST_SCHEME_HEADER,
    'version'              => '1.0',
    'consumerKey'          => 'ivana.2x.to',
    'consumerSecret'       => '*********',
    'signatureMethod'      => 'HMAC-SHA1',
    'requestTokenUrl'      => 'https://www.google.com/accounts/OAuthGetRequestToken',
    'userAuthorizationUrl' => 'https://www.google.com/latitude/apps/OAuthAuthorizeToken',
    'accessTokenUrl'       => 'https://www.google.com/accounts/OAuthGetAccessToken',
    'callbackUrl'          => 'http://ivana.2x.to/geo/?show=callback',
);
$consumer = new Zend_Oauth_Consumer($oauthOptions); 
if (!isset($_SESSION['ACCESS_TOKEN_GOOGLE'])) { 
    if (!empty($_GET)) { 
        $token = $consumer->getAccessToken($_GET, unserialize($_SESSION['REQUEST_TOKEN_GOOGLE'])); 
        $_SESSION['ACCESS_TOKEN_GOOGLE'] = serialize($token); 
    } else { 
        $token = $consumer->getRequestToken(array('scope'=>'https://www.googleapis.com/auth/latitude')); 
        $_SESSION['REQUEST_TOKEN_GOOGLE'] = serialize($token); 
        $customparams = array('domain' => 'ivana.2x.to', 'granularity' => 'best', 'location' => 'current');
        $consumer->redirect($customparams ); 
        exit; 
    } 
} else { 
    $token = unserialize($_SESSION['ACCESS_TOKEN_GOOGLE']); 
    //$_SESSION['ACCESS_TOKEN_GOOGLE'] = null; // do not use, we want to keep the access token
} 
$client = $token->getHttpClient($oauthOptions); 
$client->setUri('https://www.googleapis.com/latitude/v1/currentLocation'); 
$client->setMethod(Zend_Http_Client::GET); 


$response = $client->request(); 
$body = $response->getBody();
header('Content-Type: ' . $response->getHeader('Content-Type')); 
echo $response->getBody(); 

No, mi problema es que obtenga un recurso de ubicación vacío. Simplemente se ve así:

{"data":{"kind":"latitude#location"}}

Faltan los datos. Pero sin error ni nada.

Estoy conectado y mi ubicación está configurada y Google garantiza que Lon y Lat se devuelvan.

¿Algunas ideas?

¿Fue útil?

Solución

Estaba una pequeña señorita guiada por la descripción de la API. Una vez que pasé el parámetro de granularidad, todo funcionó bien. También tuve que agregarlo con $ client-> addParameterget ('granularidad', 'mejor'), porque Oterhwise la firma de OAuth no funcionaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top