2014-09-13 18 views
6

Python sunucu kodumdan Mirror Credentials API eklemesini tamamlama konusunda yardıma ihtiyacım var. Mirror API'sine özel bir auth jetonu eklemek için Python Google API kütüphanesini kullanıyoruz, ancak en azından bir hatayı almam gereken mirror.accounts(). Insert(). Execute() 'dan boş bir sonuç alıyorum. veya Google'ın Ayna API'sına geçirdiğimiz API belirteci kimlik bilgilerinin doğrulanması.Google Glass Mirror kimlik bilgilerini python sunucu tarafı kodundan nasıl eklersiniz?

Python sunucu kodumuz, gizli bilgilerimizin gizli bir şekilde düzenlenmesi, gizli bilgilerdeki gizli anahtarların ve client_id'lerin gizli bir .json dosyasında sunucumuzda güvenli bir şekilde saklandığımız bir koddur.

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() 

Not: $glassware_gallery_user_token biz bizim Züccaciye açtığınızda Google App Galerisi'nden geçirilen olsun belirteci (biz setup zaten cam uygulaması ettik) 'dir.

Yukarıdaki kodu çalıştırdığınızda, retValue için boş bir değer alıyoruz, boş bir sözlük: yazdırıldığında {}. Belgelere göre bu bir hata mesajı veya bir onaylama olmalıdır. Buna karşılık


yorum yapmak:

 
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' 

I: Burada

biz gibi görünüyor gönderiyor istek (httplib2 kaynak koduna baskı ifadeleri ekleyerek bu var) ne bir çıktıdır Yanıt olarak boş bir sözlüğe sahip olun: {}

Bunun aslında 2 nedenden dolayı Googles hizmetleriyle konuştuğunu görüyorum:

  1. User_token değerini geçersiz olarak değiştirirsem, kod bir istisna atar.
  2. API çağrı sayımızı, Google Geliştirici Konsolu'nda bu girişimlerin API kotasına yapılan çağrıları sayarak görebiliyorum.

     
    ''/'{'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 ben AccountManager ile cihazdaki tüm hesaplar getirmek çalışıyorum: Google'ın sunucularından yanıt olarak

gerçek veri (204 bir durum kodu içeriyor httplib2 dışarı basılmış. getAccounts(); ve yalnızca "com.google" türünde bir hesap alıyorum. getAccountsByType ("com.xxxxxx"), inceleme işlemi sırasında sağlanan kimliğiyle birlikte boş bir dizi döndürüyor.

+1

Hemen hiçbir şey orada yanlış olarak dışarı atlar. İstemci kitaplığı kendi Python veri türü dönüşümünden önce, sunucudan gelen istek ve yanıtın bir ham dökümünü sağlayabilmenin herhangi bir yolu var mı? –

+1

@TonyAllevato Yazdırma isteğim, Mirror API Python nesnesinden oluşturuyoruz. Gerçek API kodunu daha derinden nasıl kazacağımı bilmiyorum. Python'un GDK kimlik doğrulaması örnekleri var mı? Bakabiliyor ve takip edebiliyor muyum? – MikeN

+1

Şahsen ben bu sorunu düzeltmeme yardımcı olabilecek birine 250 $ Outback steakhouse hediye kartı sunuyoruz. – MikeN

cevap

1

Takma Aynası API belgeleri biraz yanlış, bir durum başlık kodu ile boş bir yanıt verir. Başarılı olduğunda 204 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) "İçerik Yok". Belgelerin bazı kısımları bana, yanıttaki kimlik bilgilerini yansıtacağına inanmamı sağladı, ancak durum böyle değildi.

Ayrı bir notta, Glass'ımdaki kimlik bilgilerinin neden Glass Glass'ımdaki https://google.com/myglass deposundan kurulabildiğinden emin olmak için camın üzerine yükleme yapamama nedenini debug edebiliyordum. bağlantı.

İlgili konular