ब्राउज़र आधारित अपलोड यूट्यूब Google एपीआई

यूट्यूब एपीआई v3 के साथ ब्राउज़र में एक वीडियो अपलोड करना संभव है जो सर्वर में जेनरेट किया गया access_code है।

RoR पर चल रहे वेब सर्वर में क्लाइंट प्रमाणपत्र है जिसका उपयोग करके प्रमाणीकृत है

Google::APIClient::JWTAsserter

मैं access_code प्राप्त करने में सक्षम हूं जो एक घंटा के लिए मान्य है।

ब्राउज़र आधारित अपलोड के साथ उपयोग करने के लिए एप्लिकेशन के लिए मेरे पास डेवलपर कुंजी भी है।

मैं ब्राउज़र के साथ access_code साझा करना चाहता हूं ताकि उपयोगकर्ता को अपने Google खाते से लॉगिन न करना पड़े।

इसे एक एकल स्क्रिप्ट में अनुकरण करने के लिए मैंने रूबी में RestClient का उपयोग किया।

यहां एक नमूना है जिसे मैंने दस्तावेज़ों के आधार पर आजमाया।

require 'google/api_client'
require 'nokogiri'
require 'rest_client'

client = Google::APIClient.new
youtube_service = client.discovered_api('youtube', 'v3')

key = Google::APIClient::PKCS12.load_key('keyfile.p12', 'password')
service_account = Google::APIClient::JWTAsserter.new(
        'certificate_email',
        'https://www.googleapis.com/auth/youtube.upload',
        key)
client.authorization = service_account.authorize

access_token = client.authorization.access_token

dev_key = "developer_key"

upload_metadata_xml = <<-EOF
<?xml version="1.0"?>

  
    Test upload one
    
      I gave a bad toast at my friend's wedding.
    
    People
    
    upload, test, one
  

EOF

headers = {
    "Authorization" => "Bearer #{access_token}",
    "GData-Version" => "2",
    "X-GData-Key" => "key=#{dev_key}",
    "Content-Type" => "application/atom+xml; charset=UTF-8"
}

upload_response = RestClient.post("https://gdata.youtube.com/action/GetUploadToken", upload_metadata_xml, headers)
xml_response = Nokogiri::XML.parse(upload_response)
upload_url = xml_response.xpath("//url").first.children.inner_text()
upload_token = xml_response.xpath("//token").first.children.inner_text()

मुझे उस लाइन पर एक त्रुटि मिल रही है जहां मैं डेटा पोस्ट कर रहा हूं।

upload_response = RestClient.post("https://gdata.youtube.com/action/GetUploadToken", upload_metadata_xml, headers)

The error says 401 Unauthorized!

मैंने Google क्रोम में पोस्टमैन एक्सटेंशन के साथ ऐसा करने की कोशिश की। एक ही त्रुटि फेंकता है।

मुझे यकीन है कि एक्सेस क्रेडेंशियल्स सही हैं। मैंने कई बार जांच की है।

क्या किसी ने इसे पहले लागू किया है? या उपयोगकर्ता को Google पर लॉगिन किए बिना इसे प्राप्त करने का कोई वैकल्पिक तरीका है।

1 संपादित करें

Based on this question on SF: Google Calendar API v3 hardcoded credentials

मैंने प्राधिकरण को Google :: APICLient :: InstalledAppFlow का उपयोग करने के लिए अकेले ही एक ही स्क्रिप्ट की कोशिश की और यह अभी भी वही <कोड> 401 अनधिकृत! फेंकता है।

0

1 उत्तर

यह एक स्थापित एप्लिकेशन होगा जबतक कि आप इसे किसी वेब सर्वर में नहीं चलाएंगे। अन्यथा आप रीडायरेक्ट पते की सही पहचान करने के साथ वेब एप्लिकेशन का चयन करेंगे।

आप OAuth2 Playground से रीफ्रेश टोकन प्राप्त करके और इसे अपने यूट्यूब ऑब्जेक्ट में सेट करके ऐसा कर सकते हैं।

यहां यह थोड़ा और बताता है।

और चरण-दर-चरण वीडियो।

0
जोड़ा
मैं एक वेबसर्वर पर प्राधिकरण भाग चलाने और ब्राउज़र आधारित अपलोड का उपयोग कर ब्राउज़र से अपलोड करना चाहता हूं। oauth2 लिंक के आधार पर ऐसा लगता है कि Google को लॉगिन करने के लिए Google को एक संवाद लॉन्च करने से नहीं रोका जा सकता है। मैं बहिष्कृत लॉगिन विधियों पर वापस नहीं आना चाहता हूं। क्या कोई तरीका है जिसमें मैं इस सेटअप को प्राप्त कर सकता हूं? सर्वर पर ऑथ, टोकन ब्राउज़र और ब्राउज़र पर साझा किया जा रहा है सीधे यूट्यूब पर अपलोड करता है।
जोड़ा लेखक Praveenram Balachandar, स्रोत
मैंने वीडियो पढ़ा और देखा बस fyi। लेकिन अभी भी प्रमाणीकरण के साथ मुद्दे थे। इस उदाहरण का उपयोग करके समाप्त हुआ जो जादू की तरह काम करता है: https://github.com/chebyte/youtube_it_rails_app_example
जोड़ा लेखक Praveenram Balachandar, स्रोत
यदि आप दस्तावेज़ पढ़ते हैं, और टिप्पणी करने से पहले वीडियो देखते हैं, तो आप देखेंगे, वहां है।
जोड़ा लेखक Ibrahim Ulukaya, स्रोत