मैं इस ऑनलाइन का जवाब नहीं ढूंढ पाया - एक तरफ Google+ साइन इन बटन का उपयोग करने से, जिसे मैं इस बिंदु पर उपयोग नहीं करना चाहता क्योंकि मैं जावास्क्रिप्ट में नहीं जाना चाहता हूं अगर मैं नहीं करता करने के लिए नहीं है।रेल, ओमनीएथ, google_oauth2, google-api-client, moments.insert ... 401 अनधिकृत ... क्यों?
मेरे पास रेल एप्लिकेशन (रूबी v1.9.3, रेल v3.2.13) पर रूबी है जिसमें मैंने ओमनीएथ को जोड़ दिया है और मैं Google+ के साथ एकीकृत करने के लिए google_oauth2 मणि का उपयोग कर रहा हूं।
मेरे साधारण लक्ष्य एक उपयोगकर्ता, गूगल + के साथ प्रमाणित मेरी Google API प्रोजेक्ट को पहुंच प्रदान, और फिर Google+ उपयोगकर्ता की तिजोरी गूगल-api-ग्राहक मणि का उपयोग कर के लिए एक क्षण पोस्ट करने के लिए सक्षम होने के लिए अनुमति देने के लिए है।
मैंने पहले ही अपना Google एपीआई प्रोजेक्ट सेटअप कर लिया है, वेब अनुप्रयोगों के लिए ओएथ 2.0 बनाया है, और Google+ एपीआई सेवा सक्षम की है।
मेरे पास निम्नलिखित प्रदाता के साथ OmniAuth सेटअप है और मैंने मुझे पोस्ट करने की अनुमति देने के लिए request_visible_actions विकल्प जोड़ा है (मुझे लगता है कि यह सही है लेकिन मैंने इसे किसी भी कोड उदाहरण से ऑनलाइन नहीं देखा है .. ।):
provider :google_oauth2, CLIENT_ID, CLIENT_SECRET, {
access_type: 'offline',
scope: 'userinfo.email,userinfo.profile,plus.me,https://www.googleapis.com/auth/plus.login',
request_visible_actions: 'http://schemas.google.com/AddActivity',
redirect_uri: 'http://localhost/auth/google_oauth2/callback'
}
जब मैं अपने उपयोगकर्ता रीडायरेक्ट करने के लिए/प्रमाणन/google_oauth2, यह अपने ऐप्स को अधिकृत करने के लिए Google+ पर उपयोगकर्ता भेजती है और उपयोगकर्ता को मंजूरी दी है, यह मेरी कॉलबैक जहाँ मैं request.env उपयोग कर सकते हैं रिटर्न ["omniauth.auth"] और इसमें मेरी सारी जानकारी है, जिसमें टोकन, ईमेल पता इत्यादि शामिल हैं। मैं auth ["credentials"] ["टोकन"] से access_token संग्रहीत कर रहा हूं।
अभी तक इतना अच्छा है, है ना?
जब मैं निम्नलिखित कोड का उपयोग कर पल पोस्ट करने का प्रयास करता हूं, तो मुझे 401 अनधिकृत त्रुटि का संकेत देने वाला अपवाद मिलता है।
client = Google::APIClient.new
client.authorization.access_token = self.access_token
plus = client.discovered_api('plus', 'v1')
moment = {
:type => 'http://schemas.google.com/AddActivity',
:target => { :id => Time.now.to_i.to_s,
:description => message,
:name => message
}
}
# post a moment/activity to the vault/profile
req_opts = { :api_method => plus.moments.insert,
:parameters => { :collection => 'vault', :userId => 'me', },
:body_object => moment
}
response = client.execute!(req_opts).body
मैं भी
credentials = Hash.new
credentials[:access_token] = self.access_token
credentials[:refresh_token] = self.refresh_token
credentials[:expires_at] = self.expires_at
client.authorization.update_token!(credentials)
लेकिन कोई भाग्य के साथ
client.authorization.access_token = self.access_token
की जगह की कोशिश की है।
मुझे लगता है कि इस मुद्दे को या तो के साथ क्या करना है:
- OmniAuth गूगल के request_visible_actions सही ढंग से
- मेरे गूगल :: APIClient वस्तु ठीक से
में टोकन की स्थापना नहीं जारी करने नहीं मुझे अब तक निम्न संसाधनों का उपयोग करके मिल गया है, लेकिन मैं आधिकारिक तौर पर अटक गया हूं:
- http://blog.baugues.com/google-calendar-api-oauth2-and-ruby-on-rails
- https://developers.google.com/+/api/latest/moments/insert
कोई भी विचार की सराहना की होगी!
मुझे यह वही समस्या है, मेरे पास अभी तक कोई भाग्य नहीं है। – cicloon