2012-11-09 19 views
5

के साथ Google API का उपयोग करके मैंने यहां कुछ खोज की है लेकिन मेरी समस्या का उत्तर नहीं मिला।वसंत-सुरक्षा-oauth2.0

मैं वसंत-सेक-ओथ 2.0 (1.0.0.RC2a) के साथ ओथ क्लाइंट को लागू करता हूं। Beans.xml को ठीक से सेट करने के बाद, मुझे खुशी से एक वैध टोकन मिलता है और सभी अच्छे दिखते हैं। फिर, मैं कैलेंडर एपीआई का उपयोग करना चाहता हूं - मुझे यकीन नहीं है कि मैं कैलेंडर ऑब्जेक्ट प्राप्त करने के लिए कॉल कैसे करूं।

मेरे (प्रासंगिक) सेटिंग्स: (वसंत-servlet.xml)

<!--apply the oauth client context--> 
<oauth:client id="oauth2ClientFilter" /> 

<oauth:resource id="google" 
    type="authorization_code" 
    client-id="<my client id>" 
    client-secret="<my client secret>" 
    access-token-uri="https://accounts.google.com/o/oauth2/token" 
    user-authorization-uri="https://accounts.google.com/o/oauth2/auth" 
    scope="https://www.googleapis.com/auth/calendar" 
    client-authentication-scheme="form" 
    pre-established-redirect-uri="https://ohad.sealdoc.com/oauth2-client/hello" /> 

<bean id="googleClientService" class="com...GoogleClientServiceImpl"> 
    <property name="butkeDemoRestTemplate"> 
     <oauth:rest-template resource="google" /> 
    </property> 

और कार्यान्वयन वर्ग:

अनुरोध प्रसंस्करण:

public class GoogleClientServiceImpl implements DemoService 
{ 
    private RestOperations butkeDemoRestTemplate; 

    @Override 
    public String getTrustedMessage() 
    { 
     String dataUri = "https://www.googleapis.com/calendar/v3/users/me/calendarList?minAccessRole=writer"; 

     Calendar service = butkeDemoRestTemplate.getForObject(dataUri, Calendar.class); 
     return "demo"; 
    } 

} 

ऐसा करने से ऊपर के साथ समाप्त होता अनुत्तीर्ण होना; नेस्टेड अपवाद त्रुटि = "invalid_request", error_description = "{त्रुटियों = [{डोमेन = usageLimits, कारण = accessNotConfigured, संदेश = पहुँच कॉन्फ़िगर नहीं किया गया}], कोड = 403, संदेश = पहुँच कॉन्फ़िगर नहीं किया गया}"

है

निश्चित रूप से, मैं अपने "getTrustedMessage()" में कुछ गलत कर रहा हूं, इसलिए मैं विशेषज्ञों से परामर्श करना सुन रहा हूं ... मैं OAuth2RestTemplate का उपयोग करना चाहता हूं, लेकिन मुझे यूआरआई का उपयोग कैसे करना चाहिए? खोज (Google) के बाद, मुझे Google कोड के केवल उदाहरण मिलते हैं, और वे Google oAuth का उपयोग करते हैं (जिसे मैं उपयोग नहीं करना चाहता - मैं अपने क्लाइंट के लिए स्प्रिंग कार्यान्वयन का उपयोग करना चाहता हूं)

कोई विचार?

+0

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

+1

@Anand मुझे लगता है कि सबसे अच्छा लेख वसंत-सुरक्षा-ओथ विकी पेज है। आपके पास अपने क्लाइंट और संरक्षित संसाधन लिखने के सभी विवरण हैं, और पहचान-प्रदाता Google होगा, इसलिए आपको संरक्षित संसाधन के XML को कॉन्फ़िगर करना होगा। https://github.com/SpringSource/spring-security-oauth/wiki/oauth2 – OhadR

+0

उपयोगकर्ता को सहमति पृष्ठ पर कैसे और कब रीडायरेक्ट किया जाता है? मैं प्रदाता के रूप में Oauth2 और Google का उपयोग कर उपयोगकर्ता पंजीकरण को लागू करने की कोशिश कर रहा हूं। http://stackoverflow.com/questions/20664846/user-registration-login-using-spring-security-oauth-2-0 –

उत्तर

3

समझ गया!

मैं इस समस्या को केवल Google APIs Console, under "Services" में विशिष्ट सेवा को सक्षम करने से ("403, संदेश = पहुँच कॉन्फ़िगर नहीं किया गया" बात हो रही है) सुलझाया है ...