यहां टोकन एक्सेस करने और यूट्यूब एपीआई के लिए टोकन रीफ्रेश करने के लिए मेरा काम प्रवाह है। मानकों के साथ इम पैदा प्राधिकरण यूआरएलयूट्यूब ओएथ हर बार जब मैं अनुरोध करता हूं प्राधिकरण विंडो को
access_type = ऑफ़लाइन, response_type = कोड, redirect_uri = uri, प्राधिकरण यूआरएल मैं से गुंजाइश = स्कोप, राज्य = राज्य, client_id = आईडी
प्रमाणीकरण कोड प्राप्त है, तो मैं एक और यूआरएल पैदा करने ACCESS_TOKEN हो और इन मानकों
कोड के साथ प्राधिकरण यूआरएल से कोड का उपयोग कर refresh_token करने के लिए: कोड, client_id: CLIENT_ID, client_secret: cLIENT_SECRET, redirect_uri: serviceCallback, राज्य: state.callback, grant_typ ई: "authorization_code"
जहां तक मुझे पता है कि उपयोगकर्ता को केवल एक बार इस प्रक्रिया को पूरा करना चाहिए और फिर यह स्वचालित होना चाहिए। मेरी समस्या यह है कि मुझे हमेशा प्राधिकरण को पूरा करना होगा और मुझे अनुरोध पर मजबूर किए बिना हमेशा नई पहुंच_टोकन और refresh_token मिल रहा है।
यहाँ कोड हिस्सा है जहाँ मैं प्रमाणीकरण यूआरएल
getAuthUrl: function(scopes, applicationCallback, serviceCallback, siteId,
selectChannel, websiteUrl) {
var requestedClientId = CLIENT_ID;
var scopess =
"https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/userinfo.email " +
scopes.replace(",", " ");
return "https://accounts.google.com/o/oauth2/auth?" +
"access_type=offline" +
"&response_type=code" +
/*"&approval_prompt=auto" +*/
"&redirect_uri=" + serviceCallback +
"&scope=" + scopes +
"&state=" + JSON.stringify({
service: NAME,
callback: applicationCallback,
scopes: scopes,
siteId: siteId,
selectChannel: selectChannel,
websiteUrl: websiteUrl
}) +
"&client_id=" + requestedClientId;
},
हो रही वहाँ इम से वापस कोड हो रही है और है कि कोड, clientid और clientSecret पहुंच टोकन प्राप्त और ताज़ा करने के लिए उपयोग कर रहा है टोकन
getAuthTokens: function(code, state, res, serviceCallback) {
// Google oAuth endpoint
var endpoint = "https://www.googleapis.com/oauth2/v4/token";
const scopes = state.scopes.split(" ");
// Setup request data
var data = {
code: code,
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
redirect_uri: serviceCallback,
state: state.callback,
grant_type: "authorization_code"
};
request.post(endpoint).send(data).type('form').set('Accept',
'application/json').end(function(err, oAuthResponse) {});
},
मैं गलत एंडपॉइंट यूआरएल का उपयोग कर रहा था, मैंने इसे यूट्यूब एपीआई दस्तावेज द्वारा प्रदान किए गए एक से अलग में बदल दिया और डेटा वैरिएबल से राज्य पैरामीटर हटा दिया लेकिन फिर भी समस्या को ठीक नहीं करता है
नई endpoint यूआरएल
var endpoint = "https://accounts.google.com/o/oauth2/token";
मैं वास्तव में अभी क्योंकि मैं प्राधिकरण के लिए मजबूर नहीं और गूगल अनुभाग एप्लिकेशन पर पहले से ही अधिकृत मेरे ऐप है और यह प्राधिकरण मतलब है कि यह अनुमति देता है केवल पहले अपडेट नहीं करता उलझन में समय और उसके बाद जब मैं दबा रहा हूं तो यह कुछ भी नहीं करता है। ओथ को यह जांचना चाहिए कि क्या मैंने टोकन रीफ्रेश किया है या नहीं, इसलिए मेरा निष्कर्ष यह है कि मैं पूरी तरह से समझ नहीं पा रहा हूं कि इसे कैसे काम करना चाहिए या मैं किसी भी तरह डीबग या टेस्ट मोड पर सबकुछ परीक्षण कर रहा हूं जहां प्राधिकरण संकेत स्वचालित रूप से मजबूर हो जाता है।
मैं किसी भी तरह की मदद के लिए वास्तव में आभारी हूं क्योंकि मुझे लगता है कि मैंने सब कुछ करने की कोशिश की।
आपको अपना कोड स्वयं ही पोस्ट करना होगा। आपको केवल एक बार अपने कोड में उपयोगकर्ता प्रमाणीकरण को संकेत देना चाहिए। एक बार आपके पास रीफ्रेश टोकन हो जाने पर आप तब भी इसका उपयोग कर सकेंगे जब आप किसी नए एक्सेस टोकन का अनुरोध करना चाहें। आपकी समस्या को शायद इस तथ्य के साथ करना होगा कि जब भी आपको आवश्यकता नहीं होती है तो आप उपयोगकर्ता की पहुंच का अनुरोध कर रहे हैं। – DaImTo