Как использовать API Google Analytics с Zend OAuth? - PullRequest
3 голосов
/ 23 мая 2011

Я никогда не пишу на форумах, поэтому я надеюсь, что не нарушу ваш кодекс.Но у меня есть вопрос, касающийся функций Zend OAuth.

Я пытался использовать его для получения каналов из API Google Analytics, но просто не могу заставить его работать.

IУ меня хорошо работает вход в OAuth, и я могу использовать его, например, с Google Docs, без проблем.Но Zend пока не поддерживает Google Analytics.

Я собираюсь опубликовать свой код сейчас, и если у кого-то есть подсказка о том, как получить канал из Google Analytics, используя функции Zend OAuth,Я был бы признателен - и в Интернете действительно не хватает информации по этой теме!

Кроме того, я пишу это как плагин Wordpress, так что не обращайте внимания на все get_option, update_option и т. Д. Представьте, что вы используете сеансывместо этого:)

С уважением, Фредрик

РЕДАКТИРОВАТЬ: Да, и еще одна вещь.Google Analytics использует URL-адреса такого типа для получения каналов: https://www.google.com/analytics/feeds/data?ids=ga%3A0000000&metrics=ga%3Apageviews&start-date=2011-05-09&end-date=2011-05-23&max-results=50

<code>   $consumerKey = 'XXX';
   $secret = 'XXX';

   require_once 'Zend/Loader.php';
   Zend_Loader::loadClass( 'Zend_Gdata_HttpClient' );
   Zend_Loader::loadClass( 'Zend_Gdata_Docs' );
   Zend_Loader::loadClass( 'Zend_Gdata_Spreadsheets' );
   Zend_Loader::loadClass( 'Zend_Oauth_Consumer' );
   Zend_Loader::loadClass( 'Zend_Http_Client' );
   Zend_Loader::loadClass( 'Zend_Gdata_Gbase' );

   // set your Google consumer key / secret 
   $CONSUMER_KEY       = $consumerKey;
   $CONSUMER_SECRET    = $secret;
   $RETURN_TO = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];

   // Multi-scoped token.
   // Sorry! I'm using the analytics scope at this particular place in the code. In the bottom of this code though, there's some request code that needs the Google Docs scope. If you want a working example for Google Docs, change this scope accordingly.
   $SCOPES = array(
      'https://www.google.com/analytics/feeds/',
   );

   $oauthOptions = array(
      'requestScheme'       => Zend_Oauth::REQUEST_SCHEME_HEADER,
      'version'             => '1.0',
      'consumerKey'          => $CONSUMER_KEY,
      'consumerSecret'       => $CONSUMER_SECRET,
      'signatureMethod'       => 'HMAC-SHA1',
      'callbackUrl'          => $RETURN_TO,
      'requestTokenUrl'       => 'https://www.google.com/accounts/OAuthGetRequestToken',
      'userAuthorizationUrl'    => 'https://www.google.com/accounts/OAuthAuthorizeToken',
      'accessTokenUrl'       => 'https://www.google.com/accounts/OAuthGetAccessToken'
   );

   if ( trim( $accessToken ) == '' ) {
      $consumer = new Zend_Oauth_Consumer( $oauthOptions );

      echo 'yes 1';
      update_option( 'ni_trends_google_request_token', serialize( $consumer->getRequestToken( array( 'scope' => implode( ' ', $SCOPES ) ) ) ) );
      $approvalUrl = $consumer->getRedirectUrl( array( 'hd' => 'default' ) );
      echo '<a href="' . $approvalUrl . '">Grant access</a>';

      if ( trim( $accessToken ) == '' ) {
         update_option( 'ni_trends_google_access_token', serialize( $consumer->getAccessToken( $_GET, unserialize( $requestToken ) ) ) );
      }

      update_option( 'ni_trends_google_request_token', '' );
   }

   $accessToken = unserialize( $accessToken );

   // This is where I run into trouble. This is for Google Docs, and it's working (although I have the Analytics Scope configured at the moment) - but how do I make my request and fetch the feed from Google Analytics?
   $httpClient = $accessToken->getHttpClient($oauthOptions);
   $client = new Zend_Gdata_Docs($httpClient, "yourCompany-YourAppName-v1");
   $feed = $client->getDocumentListFeed();
   echo "<pre>";
   echo "<ul>\n";
   foreach ($feed->entries as $entry) {
      echo "<li>$entry->title </li>\n";
   }
   echo "</ul>\n";
   echo "
\ n ";

РЕДАКТИРОВАТЬ: решена с помощью следующего!

$accessToken = unserialize( $accessToken );

    $client = $accessToken->getHttpClient( $oauthOptions );
    $client->resetParameters();

    $parameters = array(
        'ids' => 'ga:26870853',
        'metrics' => 'ga:pageviews',
        'start-date' => '2010-01-08',
        'end-date' => '2011-05-22',
        'max-results' => '50'
    );

    $client->setUri('https://www.google.com/analytics/feeds/data');

    $client->setParameterGet($parameters);

    $client->setMethod(Zend_Http_Client::GET);

    $response = $client->request();

    print_r( $response );

    exit();

1 Ответ

2 голосов
/ 24 мая 2011

Попробуйте это,

https://github.com/danielmitd/Zend_Gdata_Analytics/tree/master/Zend/Gdata

Это не официально, но у меня отлично работает. Кажется, оригинальная страница не работает, поэтому я не уверен, насколько сложно будет отследить документацию. При необходимости могу выложить несколько примеров.

...