2015-10-04 10 views
10

के साथ उपयोग करने के लिए सर्वर ऑथ एक्सेस टोकन प्राप्त करने का उचित तरीका मेरे पास एक वैश्विक खाता है जिसमें कई पक्ष हैं जिन्हें मैं सर्वर पक्ष पर उपयोग करना चाहता हूं ताकि क्लाइंट साइड पर विभिन्न विचारों के लिए डैशबोर्ड एम्बेड कर सकें। जो मैं समझता हूं, उससे मुझे सर्वर की ओर से एक सेवा खाते का उपयोग करके टोकन एक्सेस मिलता है और फिर जब चाहें क्लाइंट साइड तक एक्सेस टोकन भेज सकता है। मैं सोच रहा था, क्या यह सही प्रवाह है? क्या पहुंच टोकन प्रति सत्र होना चाहिए?किसी क्लाइंट के लिए Google एनालिटिक्स

क्लाइंट पक्ष पर प्राधिकरण here पर एक सर्वर ऑथ एक्सेस टोकन के लिए एक फ़ील्ड है, लेकिन मुझे इच्छित सटीक प्रवाह पर दस्तावेज़ नहीं मिला। असल में मैं अनिश्चित हूं कि सर्वर सर्वर पहुंच टोकन उत्पन्न करने का उचित तरीका क्या है। किसी भी मदद/पॉइंटर्स की बहुत सराहना की जाएगी।

+0

https://ga-dev-tools.appspot.com/embed-api/server-side-authorization/ – Matt

उत्तर

3

Here कैसे सर्वर साइड प्रमाणन स्थापित करने के लिए का एक उदाहरण है। उपरोक्त कोड साइट पर आने पर एक नया टोकन बनाता है। आप एंडपॉइंट देख सकते हैं जो उस पहुंच टोकन here प्राप्त करता है।

नीचे सामान्य चरण एक काम संस्करण को पाने के लिए कर रहे हैं:

चरण 1: एक सेवा खाता बनाने और डाउनलोड JSON कुंजी

चरण 2: सेवा खाता एक उपयोगकर्ता के रूप में Google Analytics में

चरण 3: पहुंच टोकन का अनुरोध करने के JSON कुंजी डेटा का उपयोग करें

# service-account.py 

import json 
from oauth2client.client import SignedJwtAssertionCredentials 

# The scope for the OAuth2 request. 
SCOPE = 'https://www.googleapis.com/auth/analytics.readonly' 

# The location of the key file with the key data. 
KEY_FILEPATH = 'path/to/json-key.json' 

# Load the key file's private data. 
with open(KEY_FILEPATH) as key_file: 
    _key_data = json.load(key_file) 

# Construct a credentials objects from the key data and OAuth2 scope. 
_credentials = SignedJwtAssertionCredentials(
    _key_data['client_email'], _key_data['private_key'], SCOPE) 

# Defines a method to get an access token from the credentials object. 
# The access token is automatically refreshed if it has expired. 
def get_access_token(): 
    return _credentials.get_access_token().access_token 

क्लाइंट पक्ष पर वापस

चरण 4: एम्बेड API लाइब्रेरी को लोड।

<script> 
(function(w,d,s,g,js,fs){ 
    g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(f){this.q.push(f);}}; 
    js=d.createElement(s);fs=d.getElementsByTagName(s)[0]; 
    js.src='https://apis.google.com/js/platform.js'; 
    fs.parentNode.insertBefore(js,fs);js.onload=function(){g.load('analytics');}; 
}(window,document,'script')); 
</script> 

चरण 5: एचटीएमएल कंटेनर डैशबोर्ड घटकों की मेजबानी के लिए जोड़ें।

<div id="chart-1-container"></div> 
<div id="chart-2-container"></div> 

चरण 6: डैशबोर्ड कोड लिखें।

एंबेडेड एपीआई को अधिकृत करने के लिए चरण 3 में प्राप्त एक्सेस टोकन का उपयोग करें।

gapi.analytics.ready (function() {

/** 
    * Authorize the user with an access token obtained server side. 
    */ 
    gapi.analytics.auth.authorize({ 
    'serverAuth': { 
     'access_token': '{{ ACCESS_TOKEN_FROM_SERVICE_ACCOUNT }}' 
    } 
    }); 
    ... 

कि समाप्ति बिंदु जो टोकन रिटर्न बनाने के अतिरिक्त कार्य आप पर वापस अंत कार्यान्वयन निर्भर करता है लेकिन कैसे डेमो का स्रोत कोड क्या यह here पाया जा सकता है।

1

मैं Google Analytics से बहुत परिचित नहीं हूं, लेकिन जहां तक ​​ओएथ जाता है, एक्सेस टोकन और रीफ्रेश टोकन की हैंडलिंग सर्वर-साइड पर होनी चाहिए। क्लाइंट को प्राधिकरण कोड प्राप्त होता है और सर्वर को प्रदान करता है, जो तब टोकन प्राप्त करता है और आवश्यक डेटा प्राप्त करने के लिए टोकन का उपयोग करता है। ग्राहक को पहुंच टोकन भेजने की कोई आवश्यकता नहीं होनी चाहिए।

यह जो मानक OAuth प्रवाह का वर्णन इस पढ़ने के लिए, उपयोगी हो सकता है: https://developers.google.com/identity/protocols/OAuth2

+1

यह प्रश्न का उत्तर नहीं देता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। – jruizaranguren

+0

यदि मेरी प्रतिक्रिया सेनोक के प्रश्न का उत्तर नहीं देती है, तो मुझे समझ में नहीं आता कि सेनोक क्या पूछ रहा है। सेनोक क्या पूछ रहा है, इसकी मेरी व्याख्या यह है कि टोकन एक्सेस करने और क्लाइंट को भेजने के लिए यह सही ओएथ प्रवाह है, और यदि एक्सेस टोकन प्रति सत्र के आधार पर हैं। मैं अपनी प्रतिक्रिया में समझाता हूं कि सेनोक का प्रवाह गलत है और इसके बजाय टोकन और रीफ्रेश टोकन तक पहुंच सर्वर-साइड पर होनी चाहिए, जो दूसरा प्रश्न अप्रासंगिक बनाता है। अगर मैंने जो प्रश्न पूछा है वह वह सवाल नहीं है जिसे लेखक पूछना चाहता है, तो शायद अधिक स्पष्टीकरण की आवश्यकता है। – RevolutionTech

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