2014-09-13 4 views
6

मुझे अपने पायथन सर्वर कोड से मिरर प्रमाण-पत्र API प्रविष्टि को पूरा करने में कुछ मदद चाहिए। हम मिरर एपीआई में एक विशेष लेख टोकन डालने के लिए पाइथन Google एपीआई लाइब्रेरी का उपयोग कर रहे हैं, लेकिन मुझे mirror.accounts() से रिक्त परिणाम मिल रहा है। (Insert।) Execute() जहां मुझे कम से कम एक त्रुटि मिलनी चाहिए या पुष्टि है कि एपीआई टोकन प्रमाण पत्र हम Google के मिरर एपीआई में जा रहे हैं।आप पाइथन सर्वर साइड कोड से Google ग्लास मिरर क्रेडेंशियल कैसे डालते हैं?

यहां हमारे पाइथन सर्वर कोड है जो हमारी गुप्त जानकारी के कुछ रिडक्शन के साथ है, गुप्त जानकारी निजी कुंजी और क्लाइंट_आईडी एक गुप्त .json फ़ाइल में हैं जो हम अपने सर्वर पर सुरक्षित रूप से स्टोर करते हैं।

with open(os.path.join(os.path.dirname(__file__), 'mirror-credentials.json')) as f: 
    credentials_json = json.load(f) 
    credentials = SignedJwtAssertionCredentials(
     service_account_name=credentials_json['client_email'], 
     private_key=credentials_json['private_key'], 
     scope='https://www.googleapis.com/auth/glass.thirdpartyauth', 
    ) 

http = credentials.authorize(httplib2.Http()) 
mirror = apiclient.discovery.build('mirror', 'v1', http=http) 

glass_request = mirror.accounts().insert(
    userToken=$glassware_gallery_user_token, 
    accountType='com.mycompany', 
    accountName="testAccountName", 
    body={ 
     'features': ["a", "b", "c"], 
     'password': $myapp_glass_auth_token, 
     'userData': [{"key": "realName", "value": "Rusty Shackleford"}], 
     'authTokens': [ 
     {"type": "drchrono_glass_token", "authToken": $myapp_glass_auth_token} 
     ], 
    }, 
) 
retValue = glass_request.execute() 

नोट: $glassware_gallery_user_token टोकन हम गूगल एप्लिकेशन गैलरी पर में पारित हो जब हम पर हमारे ग्लासवेयर कर देते हैं (हम पहले से ही सेटअप हमारे कांच के बने पदार्थ एप्लिकेशन है) है।

उपरोक्त कोड को निष्पादित करने के लिए, हमें retValue के लिए रिक्त मान मिलता है, यह एक खाली शब्दकोश है: {} मुद्रित होने पर। प्रलेखन से ऐसा लगता है कि यह या तो एक त्रुटि संदेश या एक पुष्टि होना चाहिए।


जवाब में टिप्पणी करने के लिए:

 
body='{"userData": [{"value": "Rusty Shackleford", "key": "realName"}], "authTokens": [{"authToken": "$omitted_auth_token", "type": "$myapp_glass_token"}], "password": "$omitted_auth_token", "features": ["a", "b", "c"]}', 

headers='{'content-length': '305', 'accept-encoding': 'gzip, deflate', 'accept': 'application/json', 'user-agent': 'google-api-python-client/1.2 (gzip)', 'content-type': 'application/json', 'authorization': 'Bearer ya29.hACi3eQf2L2awk3rrLgf1uZQHen2ZANgT_ObBqTNpqrwC6wa_DwjuO9q'}', 

request_uri='/mirror/v1/accounts/$my_google_serviceid/$com.myappname/rustyshack?alt=json' 

मैं:

यहाँ अनुरोध हम की तरह दिखता भेज रहे हैं (httplib2 स्रोत कोड में प्रिंट बयान डालने से यह मिल गया) का एक प्रिंटआउट है प्रतिक्रिया के रूप में एक खाली शब्दकोश प्राप्त करें: {}

मैं देख सकता हूं कि यह वास्तव में 2 कारणों से गुगल सेवाओं से बात कर रहा है:

  1. यदि मैं उपयोगकर्ता_टोकन को अमान्य होने के लिए बदलता हूं तो कोड अपवाद फेंकता है।
  2. मैं अपने एपीआई कोटा के खिलाफ कॉल के रूप में इन प्रयासों की गिनती Google डेवलपर कंसोल में हमारी एपीआई कॉल गिनती देख सकता हूं।

Google के सर्वर से जवाब में वास्तविक डेटा (httplib2 में प्रिंट किए गए 204 की एक स्थिति कोड है:

 
''/'{'fp': , 'status': 204, 'will_close': False, 'chunk_left': 'UNKNOWN', 'length': 0, 'strict': 0, 'reason': 'No Content', 'version': 11, 'debuglevel': 0, 'msg': , 'chunked': 0, '_method': 'POST'}' 

@TonyAllevato मैं खाता प्रबंधक के साथ उपकरण पर सभी खातों को लाने के लिए कोशिश कर रहा हूँ। getAccounts(); और मुझे केवल "com.google" प्रकार का एक खाता मिल रहा है। समीक्षा प्रक्रिया के दौरान आपूर्ति की गई मेरे ऐप के साथ getAccountsByType ("com.xxxxxx") एक खाली सरणी लौटा रहा है।

+1

कुछ भी गलत होने के कारण तुरंत मुझे बाहर नहीं निकलता है। क्लाइंट लाइब्रेरी के पाइथन डेटा प्रकार रूपांतरण से पहले, क्या आप कोई तरीका है कि आप अनुरोध से कच्चे डंप प्रदान कर सकते हैं और सर्वर से प्रतिक्रिया दे सकते हैं? –

+1

@TonyAllevato मैं प्रिंटिंग अनुरोध कर रहा हूं जिसे हम मिरर एपीआई पायथन ऑब्जेक्ट से बनाते हैं। मैं नहीं जानता कि कैसे वास्तविक एपीआई कोड में गहराई से खोदना है। क्या जीडीके प्रमाणीकरण के पाइथन उदाहरण काम कर रहे हैं, मैं देख और अनुसरण कर सकता हूं? – MikeN

+1

मैं व्यक्तिगत रूप से अतिरिक्त $ 250 आउटबैक स्टीकहाउस उपहार कार्ड की पेशकश कर रहा हूं जो इस समस्या को ठीक करने में मेरी सहायता कर सकता है। – MikeN

उत्तर

1

सम्मिलित मिरर एपीआई दस्तावेज थोड़ा गलत है। यह एक स्टेटस हेडर कोड के साथ एक खाली प्रतिक्रिया देता है 204 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) "सफल नहीं होने पर" कोई सामग्री नहीं है। प्रलेखन के कुछ हिस्सों ने मुझे विश्वास दिलाया कि यह प्रतिक्रिया में प्रमाण-पत्रों को प्रतिबिंबित करेगा, लेकिन ऐसा नहीं था।

एक अलग नोट पर, मैं डीबग करने में सक्षम था कि मुझे अपने ग्लास पर लोड होने वाले क्रेडेंशियल क्यों नहीं मिल पाए थे, यह सुनिश्चित करने के लिए कि मैं अपने ग्लास डिवाइस पर https://google.com/myglass स्टोर से अपने अस्थायी ग्लासवेयर इंस्टॉल कर सकता हूं जो सुनिश्चित करता है कि वहां है कनेक्टिविटी।

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