2012-03-29 15 views
12

मैं एक ऐप विकसित कर रहा हूं जो उपयोगकर्ताओं को Google API v3 का उपयोग करके अपना Google Analytics डेटा देखने की अनुमति देता है। मैंने जो भी शोध किया है, वह यह इंगित करता है कि उपयोगकर्ताओं को अपने Google खातों में लॉगिन करने की आवश्यकता है और मैं एपीआई से पूछताछ शुरू करने से पहले अपने ऐप को एक्सेस प्रदान कर सकता हूं; हालांकि, यह वही नहीं है जो मैं चाहता हूं, मुझे अपने उपयोगकर्ताओं को अपने स्वयं के Analytics डेटा देखने की आवश्यकता है। मेरे डेटा तक पहुंचने के लिए एपीआई को अधिकृत कैसे कर सकता है। मेरे पास क्लाइंट आईडी और क्लाइंट सीक्रेट है, लेकिन Google के एपीआई v3 द्वारा लागू ओएथ एक प्राधिकरण टोकन मांग रहा है, जिसे उपयोगकर्ता को अपने Google खाते में लॉगिन करने के लिए ही प्राप्त किया जा सकता है (क्या यह सही है?) क्या वहां है अपने स्वयं के Google Analytics खाते में लॉगिन करने और उपयोगकर्ताओं को उस जानकारी को प्रदर्शित करने का एक तरीका?Google Analytics API v3 प्रमाणीकरण मेरे डेटा तक पहुंच की अनुमति देने के लिए

+3

पर अधिक प्रलेखन के साथ कोड टियन ... क्या आपको कोई जवाब मिला? – lpdahito

+0

क्या आपको इसके लिए कोई जवाब मिला? –

उत्तर

2

आप ऑफलाइन एक्सेस के लिए refresh token का उपयोग कर सकते हैं। एक बार जब आप refresh token प्राप्त कर लेंगे, तो आप इसे किसी फ़ाइल या डेटाबेस में सहेज सकते हैं और प्राधिकरण रीडायरेक्ट किए बिना डेटा तक पहुंचने के लिए इसका उपयोग कर सकते हैं।

दस्तावेज़ों में Using a Refresh Token देखें।

यह भी देखें: How can we access specific Google Analytics account data using API?

+0

मुझे लगता है कि एक और मजबूत समाधान के लिए आपको सेवा खाता उत्तर – mattl

+0

@mattl के साथ जाना चाहिए, मुझे नहीं लगता कि यह वोट डाउन करने का एक कारण है। जवाब गलत नहीं है, यह Google ऑफ़र विकल्पों में से एक है। –

+0

आप सही हैं मुझे खेद है। मैं इसे अब नहीं बदल सकता क्योंकि यह 20 घंटे से अधिक हो गया है। क्या कोई और फिर से ऊपर उठा सकता है। – mattl

10

मेरा मानना ​​है कि आप क्या करना एक सेवा खाता की स्थापना की है चाहता हूँ: https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtAuthorization

"स्वचालित/ऑफ़लाइन/अनुसूचित Google Analytics डेटा के लिए उपयोग करने के लिए उपयोगी अपना खुद का खाता। उदाहरण के लिए, अपने स्वयं के Google Analytics डेटा का लाइव डैशबोर्ड बनाने और इसे अन्य उपयोगकर्ताओं के साथ साझा करने के लिए।

कुछ चरणों के लिए आपको आवश्यकता है Google Analytics के साथ काम करने के लिए सेवा खातों को कॉन्फ़िगर करने के लिए llow:

  1. एपीआई कंसोल में एक प्रोजेक्ट पंजीकृत करें।
  2. एपीआई एक्सेस फलक के तहत, Google एपीआई कंसोल में, क्लाइंट आईडी बनाएं, जो कि सेवा प्रकार पर एप्लिकेशन प्रकार सेट के साथ है।
  3. Google Analytics में साइन-इन करें और व्यवस्थापन अनुभाग पर नेविगेट करें।
  4. वह खाता चुनें जिसके लिए आप एप्लिकेशन को तक पहुंच प्राप्त करना चाहते हैं।
  5. चयनित Google Analytics खाते के उपयोगकर्ता के रूप में चरण # 2 से कंसोल एपीआई कंसोल में बनाए गए क्लाइंट आईडी से ईमेल पता जोड़ें।
  6. Google Analytics डेटा तक पहुँचने के लिए सेवा खाते के लिए निर्देशों का पालन करें: https://developers.google.com/accounts/docs/OAuth2ServiceAccount "
0

यहाँ एक पूर्ण गूगल एनालिटिक्स सेटअप नोट सहित सेवा खाते के साथ उदाहरण के कार्यान्वयन रिपोर्टिंग है बस अपने प्रश्न पढ़ने के बाद यह लिखा था, मैं। मैं ठीक उसी प्रश्न मिल गया है एक ही समस्या थी।

<?php 
// Service account code from http://stackoverflow.com/questions/18258593/using-a-service-account-getaccesstoken-is-returning-null 
// Analytics code from https://code.google.com/p/google-api-php-client/source/browse/trunk/examples/analytics/simple.php?r=474 

require_once 'google-api-php-client/src/Google_Client.php'; 
require_once 'google-api-php-client/src/contrib/Google_AnalyticsService.php'; 

// Set your client id, service account name (AKA "EMAIL ADDRESS"), and the path to your private key. 
// For more information about obtaining these keys, visit: 
// https://developers.google.com/console/help/#service_accounts 
const CLIENT_ID = 'CLIENT ID'; 
const SERVICE_ACCOUNT_NAME = 'SERVICE ACCOUNT NAME (IS "EMAIL ADDRESS")'; 
const KEY_FILE = 'KEY FILE'; 
const SCOPE = 'https://www.googleapis.com/auth/analytics.readonly'; 

// OPEN GOOGLE ANALYTICS AND GRANT ACCESS TO YOUR PROFILE, THEN PASTE IN YOUR SERVICE_ACCOUNT_NAME 

$key = file_get_contents(KEY_FILE); 
$auth = new Google_Auth_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    array(SCOPE), 
    $key 
); 

$client = new Google_Client(); 
$client->setScopes(array(SCOPE)); 
$client->setAssertionCredentials($auth); 
$client->getAuth()->refreshTokenWithAssertion(); 
$accessToken = $client->getAccessToken(); 
$client->setClientId(CLIENT_ID); 
$service = new Google_Service_Analytics($client); 

?> 
<!DOCTYPE html> 
<html> 
    <head> 
    <title>Google Experiments Dashboard</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" media="screen"> 
    </head> 
    <body class="container"> 
    <h1>Your experiments</h1> 
    <table class="table"><tr><th><th>Experiment<th>Page<th>Started<th>Status 
<?php 
$progressClasses = array('progress-bar progress-bar-success','progress-bar progress-bar-info','progress-bar progress-bar-warning', 'progress-bar progress-bar-danger'); 
$profiles = $service->management_profiles->listManagementProfiles("~all", "~all"); 

foreach ($profiles['items'] as $profile) { 
    $experiments = $service->management_experiments->listManagementExperiments($profile['accountId'], $profile['webPropertyId'], $profile['id']); 

    foreach ($experiments['items'] as $experiment) { 
    echo "<tr>"; 
    if ($experiment['status'] == 'RUNNING') 
     echo '<td><a class="btn btn-xs btn-success"><i class="glyphicon glyphicon-ok"></i></a>'; 
    else 
     echo '<td><a class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-remove"></i></a>'; 
    $expHref = "https://www.google.com/analytics/web/?pli=1#siteopt-experiment/siteopt-detail/a{$profile['accountId']}w{$experiment['internalWebPropertyId']}p{$experiment['profileId']}/%3F_r.drilldown%3Danalytics.gwoExperimentId%3A{$experiment['id']}/"; 
    echo "<td><a href='$expHref' target='_blank'>{$experiment['name']}</a>"; 
    echo "<td>{$experiment['variations'][0]['url']}"; 
    echo "<td>".date('Y-m-d',strtotime($experiment['startTime'])); 
    echo "<td>"; 

    echo '<div class="progress" style="width:400px">'; 
    foreach ($experiment['variations'] as $i => $variation) { 
     echo '<a href="'.$variation['url'].'" target="_blank"><div class="'.$progressClasses[$i].'" role="progressbar" style="width: '.(100*$variation['weight']).'%">'.$variation['name'].'</div></a>'; 
    } 
    echo '</div>';   
    } 
} 
?> 

https://gist.github.com/fulldecent/6728257

+0

वह कोड मेरे लिए काम करता है ... Google_AssertionCredientials => Google_Auth_AssertionCredentials और Google_AnalyticsService => Google_Service_Analytics – Graben

+0

के बाद से क्लास नाम बदल गए हैं, धन्यवाद, संपादन –

संबंधित मुद्दे