Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to allow users to see my Google Analytics chart data without undergoing authentication/Sign In process

I am using the Google Analytics Javascript library to let users view a GeoMap of the particular page they are on. However, everytime they attempt to do so, thye have to go through an authentication process only to have my data displayed on my page. How can I find an alternative to this. I only want to embed my Analytics data through a visualized graph on my page so that all anonymous viewers can see it. This is the code where the process takes place.

   google.setOnLoadCallback(init); 
    /**
    * This is called once the Google Data JavaScript library has been loaded.
    * It creates a new AnalyticsService object, adds a click handler to the
    * authentication button and updates the button text depending on the status.
    */
    function init() 
    {
      myService = new google.gdata.analytics.AnalyticsService('charts_sample');

     /*
       this is essentially the line I want to replace. It anonymously 
       tries to access my viewer's account.I want to set this scope such as it 
       address the  URI of my Analytics account       
     */            

      scope = 'https://www.google.com/analytics/feeds'; 

     /*
       if the above scope is altered to my URI then the below unnecessary login
       steps will not be required at all. This is the reason why my viewers are
       taken to their analytics page which is fundamentally non-existent.
     */   

      $("authButton").onclick = function() {
        // Test if the user is not authenticated.
       if (!google.accounts.user.checkLogin(scope)) 
         {
           // Authenticate the user.
            google.accounts.user.login(scope); 
         } else 
         {
          // Log the user out.
           google.accounts.user.logout();
           getStatus();
         }
      }
     getStatus(); 
  } 

  // gets the account data and then gets the outputs of the requested query              

   function getStatus() 
   {
      getAccountFeed();
      getDataFeed();
   }


   function getAccountFeed() 
   {
      //Here agsain, I want to modify it access my account's URI  
      var myFeedUri ='https://www.google.com/analytics/feeds/accounts/default?max-results=50';
      myService.getAccountFeed(myFeedUri, handleAccountFeed, handleError);
  }

  function getDataFeed() 
  { 
   var myMapPopularityFeedUri = 'https://www.google.com/analytics/feeds/data?ids=ga%3A53482361&dimensions=ga%3ApagePath%2Cga%3Acity%2Cga%3Acountry%2Cga%3Aregion%2Cga%3Alongitude%2Cga%3Alatitude&metrics=ga%3Avisitors&start-date=2011-12-01&end-date=2011-12-25&max-results=50';

  myService.getDataFeed(myMapPopularityFeedUri, handleDataFeed, handleError);  
 }   

Help will be appreciated a lot. Please don't be too critical. Its my first question here. Instead let me know and I will make for my amendments.

Here is a screenshot of what the embed looks like upon my own click, i.e, after GA has fetched my own data through my account. The geoMap is at the bottom of the page.

like image 751
jmishra Avatar asked Nov 22 '25 19:11

jmishra


1 Answers

It seems the best way is creating of the separate shared (public) feed (report) in Analytics. Just feed security requires authorization login to view or receive data if the feed (report) was created under personal credentials ... independently to what version OAuth or OAuth2 is used, just if you use request to view data on the site you should use at least API key (for public reports) OR OAuth credentials for personal reports.

look this guide:
Loading an API and Making a Request

or choose any other example from this page:
Google Analytics: Core Reporting API Client Libraries & Sample Code (v3)

Use this nice tool also:
OAuth 2.0 Playground

Generate API key for maps:
Google Maps API Family

Google Maps JS API tutorial:
Google Maps JavaScript API V3

like image 163
swift Avatar answered Nov 25 '25 11:11

swift



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!