2013-04-23 9 views
12

नहीं है मुझे क्लाउड एंडपॉइंट विधि के लिए उपयोगकर्ता आईडी प्राप्त करने में कोई समस्या है। मैंने अपने एंड्रॉइड क्लाइंट में oauth2 प्रमाणीकरण का उपयोग किया है और मेरी सेवा में प्रमाण पत्र पारित किया है। नीचे मेरी विधि जैसा दिखता है (इसे और स्पष्ट करने के लिए सरलीकृत) के समान है।क्लाउड एंडपॉइंट एपीआई में फंक्शन User.getUserId() उपयोगकर्ता ऑब्जेक्ट के लिए शून्य देता है जो शून्य

मुझे लगता है कि issue 8848 पाइथन के लिए इस समस्या के समान ही लगता है।

क्या यह समस्या जावा एपीआई में भी एक समस्या है? विधि

public SuccessCode doSomething(WireFormat wire, User user){ 
    log.info("User id: "+user.getUserId()); 
    log.info("Federated identity: "+user.getFederatedIdentity()); 
    log.info("Email address: "+user.getEmail()); 
} 

फ़ेडरेटेड पहचान और userId भले ही एंड्रॉयड क्लाइंट में साख OAuth2 प्रमाणीकरण प्रदर्शन किया था के लिए अशक्त दिखाई देगा। ईमेल पता लॉग में सही ढंग से दिखाया गया है। यह सब एक तैनात आवेदन बीटीडब्ल्यू पर है।

किसी के पास कोई अन्य सुझाव है कि क्या गलत है? इस मुद्दे के लिए कोई ज्ञात कामकाज? मैंने अपने एंड्रॉइड क्लाइंट को स्थापित करने के लिए https://developers.google.com/appengine/docs/java/endpoints/consume_android#making-authenticated-calls में सुझाई गई विधि का पालन किया है।

उत्तर

5

आप सही हैं कि समस्या 8848 एक ही कारण है। अंतर्निहित मुद्दा भाषा-अज्ञेयवादी है और दोनों रनटाइम को प्रभावित करता है। फिलहाल आपको एंड्रॉइंट्स में विधि तर्क के माध्यम से User ऑब्जेक्ट में उत्तीर्ण उपयोगकर्ता आईडी फ़ील्ड की अपेक्षा नहीं करनी चाहिए।

एक सुपर सबोपेटिमल वर्कअराउंड User ऑब्जेक्ट को डेटास्टोर पर जारी रखना और इसे वापस पढ़ना है। पुनः पढ़ने वाली वस्तु में उपयोगकर्ता आईडी शामिल होगी।

+0

धन्यवाद। मैं अनुमान लगाता हूं कि मैं कामकाज की कोशिश करूंगा। कम से कम मुझे पता है और अब एक बगफिक्स के लिए इंतजार कर सकते हैं। – user2072160

+0

ऐसा लगता है कि यह अभी भी तय नहीं है। मेरे पास क्लाउड एंडपॉइंट्स बैकएंड है जो जब भी getUserId को कॉल करता है तो शून्य हो जाता है। हालांकि, उपयोगकर्ता आईडी का उपयोग करने की कोई आवश्यकता है? ईमेल भी अनूठा है और मुझे नहीं लगता कि उपयोगकर्ता के लिए अपना ईमेल पता बदलना संभव है। – sthomps

+0

यह काम करने में कोई भरोसा है? इस बुरे काम को लागू करने का निर्णय लेने की कोशिश कर रहे हैं, या कुंजी के रूप में ईमेल का उपयोग करने के साथ जाओ। – Patrick

-1

मैंने प्रश्न में उसी दस्तावेज़ संदर्भ का पालन किया और वही सटीक समस्या थी।

अंत में अंतिम बिंदु करके OAuth2 के साथ काम मिल गया है:

गूगल के लिए एक अद्यतन Play सेवाओं जो मैं करने के लिए अद्यतन किया गया था; अब संस्करण 15 (एंड्रॉइड एसडीके) पर।

endpoint प्रलेखन राज्य है कि आप अपने आवेदन के लिए Google Plus API सक्षम भले ही आप सिर्फ़ अपने ऐप्लिकेशन इंजन अंतिमबिंदुओं के लिए userinfo.email दायरे का उपयोग करके करना चाहिए करने के लिए अद्यतन किया गया था। मैंने क्लाउड कंसोल के माध्यम से ऐसा किया।

इसके अलावा, अंत में, एक नया नोट था जिसमें कहा गया था कि OAuth2 एमुलेटर से काम नहीं करता है। मैंने इसकी पुष्टि की। मुझे अभी भी एंड्रॉइड एमुलेटर से शून्य उपयोगकर्ता त्रुटि मिलती है, भले ही उत्पादन ऐप इंजन को इंगित किया जाए। तो मैं अभी भी एक वास्तविक डिवाइस से केवल अंत बिंदुओं का परीक्षण कर सकता हूं।

मैं यह पुष्टि करने में सक्षम था कि मुझे उपरोक्त सभी तीन चरणों की आवश्यकता है।

+0

क्या आप कृपया बयान के लिंक प्रदान कर सकते हैं? मैंने एंडपॉइंट का उपयोग करके ऐप विकसित करना शुरू कर दिया है लेकिन मैंने कभी भी Google+ एपीआई को सक्षम करने के बारे में कुछ भी नहीं देखा है। –

+0

यह समाधान प्रश्न के लिए अप्रासंगिक लगता है। कहा गया समस्या बैकएंड एपेंगिन/क्लाउड एंडपॉइंट्स में है। आप जो वर्णन कर रहे हैं वह फ्रंटएंड एंड्रॉइड कोड में है। – sthomps

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