.NET

24

के लिए Analytics रिपोर्टिंग API V4 क्लाइंट लाइब्रेरी मैं अपने Google Analytics उदाहरण से कुछ डेटा प्राप्त करने का प्रयास कर रहा हूं और मैं .NET (https://developers.google.com/api-client-library/dotnet/apis/analyticsreporting/v4) के लिए Analytics रिपोर्टिंग API V4 क्लाइंट लाइब्रेरी का उपयोग करना चाहता हूं ताकि मैं सेंकना कर सकूं इस डेटा में से कुछ को एक प्रशासनिक साइट में बनाया गया है जिसे हमने बनाया है। मुझे इस कोड का उपयोग करने के किसी भी उदाहरण को खोजने में परेशानी हो रही है और प्रलेखन अविश्वसनीय रूप से विचित्र लगता है। मैं अधिकृत करने के लिए एक सेवा खाते का उपयोग करना चाहता हूं क्योंकि हमें केवल उस एनालिटिक्स खाते से जुड़े डेटा को देखने की आवश्यकता है जिसे हम नियंत्रित करते हैं।.NET

किसी को भी कुछ नमूना कोड प्रदान करते हैं या सही दिशा में मुझे बिंदु .net एपीआई का उपयोग कर कुछ बुनियादी रिपोर्ट डेटा प्राप्त करने के लिए कर सकता है, यह बहुत सराहना

+1

[क्लाइंट लाइब्रेरी डॉक्यूमेंटेशन] (https://developers.google.com/api-client-library/dotnet/get_started) सभी Google एपीआई के लिए लागू होता है। विशेष अनुरोध करने के लिए आप विभिन्न भाषाओं में [V4 API नमूने] (https://developers.google.com/analytics/devguides/reporting/core/v4/samples) देख सकते हैं और इसे नेट नेट पर मैप कर सकते हैं। – Matt

+3

मैंने अंततः यह पता लगाया कि .NET क्लाइंट पुस्तकालयों का उपयोग करने का अनुरोध कैसे किया जाए लेकिन यह निश्चित रूप से सहज नहीं है। यदि मेरे पास कुछ अतिरिक्त समय है तो मैं कुछ नमूना कोड पोस्ट करूंगा – Ben

+0

यदि आपको वह समय मिले तो अच्छा होगा :) –

उत्तर

43

सी से गूगल एनालिटिक्स रिपोर्टिंग API कॉलिंग # विशेष रूप से नहीं है हो सकता है मुश्किल है, हालांकि सभी आवश्यक कदमों को Google विश्लेषिकी API दस्तावेज़ में बहुत स्पष्ट रूप से उल्लिखित नहीं लग रहा है। मैं उन्हें यहां सब कुछ सूचीबद्ध करने की कोशिश करूंगा। जबकि वाईएमएमवी, मुझे विश्वास है कि इन चरणों को 7/20/2016 के रूप में सही होना चाहिए।

आप एक नया सी # प्रोजेक्ट बनाकर शुरू कर सकते हैं। हम GoogleAnalyticsApiConsole नामक परीक्षण के लिए एक कंसोल एप्लिकेशन बनायेंगे। एक बार प्रोजेक्ट बनने के बाद, हम NuGet पैकेज मैनेजर कंसोल (विजुअल स्टूडियो 2015 में टूल्स मेनू के नीचे पाए गए) का उपयोग करके Google Analytics Reporting API V4 Client Library for .NET का संदर्भ जोड़ देंगे। PM> प्रॉम्प्ट पर कंसोल ऊपर फायर और जारी निम्न आदेश:

PM> Install-Package Google.Apis.AnalyticsReporting.v4

कि पैकेज क्लाइंट अन्य निर्भरता के एक नंबर के साथ-साथ Google Analytics रिपोर्टिंग वेब सेवाओं कॉल करने के लिए की जरूरत पुस्तकालयों डाउनलोड करेगा स्थापित कर रहा है।

वेब सेवाओं को कॉल करने के लिए, आपको अपने आवेदन के लिए OAuth 2.0 पहुंच सेट अप करने की आवश्यकता होगी। https://console.cloud.google.com/: Google क्लाउड कंसोल को

  1. लॉगिन: इस स्थापना can be found here के लिए दस्तावेज़, लेकिन मैं नीचे संक्षेप में प्रस्तुत करेंगे। उस खाते से लॉगिन करना सुनिश्चित करें जिसके पास Google Analytics खातों तक पहुंच है जो आप रिपोर्टिंग API से पूछताछ करने का प्रयास कर रहे हैं।

  2. एपीआई प्रबंधक चयन Google मेघ प्लेटफ़ॉर्म मेनू पर क्लिक करके।

Google Cloud Platform API Manager

  1. बाएं हाथ की ओर पर, साख क्लिक करें और फिर Google Analytics API Console नामक एक नई परियोजना बनाने। नई परियोजना बनाने के लिए इसे कुछ समय दें।

  2. के बाद परियोजना बनाई गई है, साख फिर से क्लिक करता है, तो यह पहले से ही चयनित नहीं है, और उसके बाद सही पैनल में OAuth सहमति स्क्रीन लिंक। उपयोगकर्ताओं को दिखाए गए उत्पाद का नामGoogle Analytics API Console पर सेट करें और फिर सहेजें पर क्लिक करें।

  3. क्लिक करें साख फिर से, और फिर क्लिक करें साख बनाएँ, और चुनें OAuth क्लाइंट आईडीआवेदन प्रकार के लिए चयन करें अन्य और उसके बाद के रूप में नामGoogle Analytics API Console दर्ज करें और बनाएँ क्लिक करें।

  4. प्रमाण पत्र बनाने के बाद, आपको क्लाइंट आईडी और क्लाइंट रहस्य प्रस्तुत किया जाएगा। आप संवाद विंडो बंद कर सकते हैं।

  5. अब, तहत साख आप OAuth 2.0 क्लाइंट आईडी के तहत एक प्रविष्टि देखना चाहिए। client_secret.json फ़ाइल डाउनलोड करने के लिए उस प्रविष्टि के बहुत दूर दाईं ओर डाउनलोड आइकन पर क्लिक करें (इस फ़ाइल का लंबा नाम होगा)। एक बार इसे डाउनलोड करने के बाद उस फ़ाइल को रूट स्तर पर अपनी परियोजना में जोड़ें और इसे client_secret.json पर पुनर्नामित करें।

Google Cloud Platform API Credentials

  1. अब जब कि OAuth 2.0 क्रेडेंशियल बना दिया गया है, हम रिपोर्टिंग API कॉल करने के लिए इसे सक्षम करने की जरूरत है। अवलोकन का चयन करें और सुनिश्चित करें कि Google API दाएं पैनल में चुना गया है। खोज बॉक्स में Reporting टाइप करें और सूची से Analytics रिपोर्टिंग API V4 चुनें। अगली स्क्रीन पर, पर क्लिक करें सक्षम करें। एक बार यह एपीआई सक्षम हो जाने के बाद, आपको दाएं पैनल में सक्षम API सूची के अंतर्गत इसे देखने में सक्षम होना चाहिए।

Google Cloud Platform Enabled Analytics Reporting

अब है कि हम अपने प्रोजेक्ट बनाया है और हमारे OAuth 2.0 क्रेडेंशियल बना लिया है, यह रिपोर्टिंग API V4 कॉल करने के लिए समय है। नीचे सूचीबद्ध कोड Google API और client_secret.json फ़ाइल का उपयोग Google.Apis.Auth.OAuth2.UserCredential बनाने के लिए एक दृश्य के लिए दी गई दिनांक सीमा के बीच सभी सत्रों के लिए रिपोर्टिंग API पूछने के लिए करेगा। कोड Java example here से अनुकूलित किया गया है।

कोड को क्रियान्वित करने से पहले, सामग्री और अगर नएकॉपी करने के लिए आउटपुट निर्देशिका सेटिंग को कॉपी करने के लिए client_secret.json फ़ाइल पर बिल्ड कार्रवाई सेट करना सुनिश्चित करें। दो चर भी हैं जिन्हें उचित रूप से सेट करने की आवश्यकता है। सबसे पहले, GetCredential() विधि में, OAuth 2.0 क्रेडेंशियल बनाने के लिए उपयोग किए गए ईमेल पते पर loginEmailAddress मान सेट करें। फिर, Main विधि में, ViewId को reportRequest चर में सेट करना सुनिश्चित करें कि आप रिपोर्टिंग API का उपयोग कर क्वेरी करना चाहते हैं। ViewId ढूंढने के लिए, Google Analytics में लॉग इन करें और व्यवस्थापक टैब का चयन करें। वहां से, उस दृश्य का चयन करें जिसे आप में क्वेरी करना चाहते हैं, दूर दाईं ओर स्थित ड्रॉपडाउन देखें और सेटिंग्स देखें।देखें आईडीबेसिक सेटिंग्स के तहत प्रदर्शित किया जाएगा।

पहली बार कोड निष्पादित होने पर, यह एक वेब पेज लाएगा कि क्या आप Google Analytics API Console को एपीआई डेटा तक पहुंचने की अनुमति देना चाहते हैं। आगे बढ़ने के लिए का चयन करें। तब से उस अनुमति पर GoogleAnalyticsApiConsoleFileDataStore में संग्रहीत किया जाएगा। अगर वह फ़ाइल हटा दी गई है, तो अनुमति को दोबारा देने की आवश्यकता होगी। वह फ़ाइल %APPDATA%\GoogleAnalyicsApiConsole निर्देशिका में पाई जा सकती है।

Google API Permission OAuth 2.0

कृपया ध्यान दें कि मेरा मानना ​​है कि इस परिदृश्य ओपी की जरूरतों को पूरा करेगा। यदि यह एप्लिकेशन ग्राहकों को वितरित किया गया था, तो एक अलग ओएथ 2.0 योजना सबसे अधिक आवश्यक होगी।

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Threading; 
using System.Threading.Tasks; 
using Google.Apis.AnalyticsReporting.v4; 
using Google.Apis.AnalyticsReporting.v4.Data; 
using Google.Apis.Auth.OAuth2; 
using Google.Apis.Services; 
using Google.Apis.Util.Store; 

namespace GoogleAnalyticsApiConsole 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       var credential = GetCredential().Result; 
       using(var svc = new AnalyticsReportingService(
        new BaseClientService.Initializer 
        { 
         HttpClientInitializer = credential, 
         ApplicationName = "Google Analytics API Console" 
        })) 
       {  
        var dateRange = new DateRange 
        { 
         StartDate = "2016-05-01", 
         EndDate = "2016-05-31" 
        }; 
        var sessions = new Metric 
        { 
         Expression = "ga:sessions", 
         Alias = "Sessions" 
        }; 
        var date = new Dimension { Name = "ga:date" }; 

        var reportRequest = new ReportRequest 
        { 
         DateRanges = new List<DateRange> { dateRange }, 
         Dimensions = new List<Dimension> { date }, 
         Metrics = new List<Metric> { sessions }, 
         ViewId = "<<your view id>>" 
        }; 
        var getReportsRequest = new GetReportsRequest { 
         ReportRequests = new List<ReportRequest> { reportRequest } }; 
        var batchRequest = svc.Reports.BatchGet(getReportsRequest); 
        var response = batchRequest.Execute(); 
        foreach (var x in response.Reports.First().Data.Rows) 
        { 
         Console.WriteLine(string.Join(", ", x.Dimensions) + 
         " " + string.Join(", ", x.Metrics.First().Values)); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.ToString()); 
      } 
     } 

     static async Task<UserCredential> GetCredential() 
     { 
      using (var stream = new FileStream("client_secret.json", 
       FileMode.Open, FileAccess.Read)) 
      { 
       const string loginEmailAddress = "<<your account email address>>"; 
       return await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets, 
        new[] { AnalyticsReportingService.Scope.Analytics }, 
        loginEmailAddress, CancellationToken.None, 
        new FileDataStore("GoogleAnalyticsApiConsole")); 
      } 
     } 
    } 
} 
+2

ध्यान दें कि 'AnalyticsReportingService'' IDISposable 'लागू करता है और इसे' उपयोग 'ब्लॉक में लपेटा जाना चाहिए। – TrueWill

+0

जब मैं इसका उपयोग करता हूं, तो Google ऐप का एक नया टैब खुलता है ('डेवलपर जानकारी' के साथ ईमेल जो मैं Google Analytics का उपयोग कर रहा हूं, उसी तरह ईमेल करता हूं) मेरे व्यक्तिगत जीमेल खाते तक पहुंच का अनुरोध करता है (जिसे मैं क्रोम में लॉग इन करता हूं के रूप में) ... यह क्यों हो रहा है? – Daevin

+0

@ डेविन इच्छा मैं यहां और अधिक सहायक हो सकता हूं लेकिन मुझे सच में यकीन नहीं है कि आप इसे क्यों देख रहे हैं। क्या आपने * Google क्लाउड प्लेटफ़ॉर्म कंसोल * में उस खाते के साथ लॉग इन किया है जिसके पास आपके GA डेटा तक पहुंच है? क्या आपने * Analytics रिपोर्टिंग API V4 * के अलावा किसी भी एपीआई तक पहुंच का अनुरोध किया था? – rsbarro

4

मैं एक ही अनुभव था:

यहाँ कोड है गूगल के प्रलेखन बहुत गहराई है, लेकिन कैसे नेट के साथ कनेक्ट करने के स्पष्ट उदाहरण दे रही है पर बहुत भयानक है।

मुझे एक मुख्य बात यह है कि मुझे अंततः एहसास हुआ कि आप या तो ओएथ 2 क्रेडेंशियल या सर्विस अकाउंट क्रेडेंशियल का उपयोग कर कनेक्ट कर सकते हैं। यदि आप अपने Analytics खाते के स्वामी हैं, तो सेवा खाते का उपयोग करें। यदि आपको अन्य उपयोगकर्ताओं के Analytics खातों से कनेक्ट करने की आवश्यकता है, तो OAuth2 का उपयोग करें।

ओएथ 2 क्रेडेंशियल का उपयोग करके Analytics API डेटा प्राप्त करने के तरीके के बारे में कुछ उदाहरण ऑनलाइन प्रतीत होते हैं, लेकिन मेरे पास मेरा Analytics खाता है और बस इससे डेटा खींचना चाहता था। मैंने ServiceAccountCredential का उपयोग करके Analytics रिपोर्टिंग API v4 से कनेक्ट करने का तरीका बताया, और मैंने सभी विवरणों के साथ समान स्टैक ओवरफ़्लो प्रश्न पर an answer लिखा।