2015-04-29 14 views
5
import json 
import gspread 
from oauth2client.client import SignedJwtAssertionCredentials 

json_key = json.load(open('Crowds-9569176f5988.json')) 
scope = ['https://spreadsheets.google.com/feeds'] 

credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope) 
#gc = gspread.authorize(credentials) 

Hata:'str' OAuth için tampon arayüzü Python 3 hata desteklemediği

Traceback (most recent call last): File "C:\Users\sony\Desktop\Python\new.py", line 8, in <module> 
    credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope) File "C:\Python34\lib\site-packages\oauth2client\util.py", line 137, in positional_wrapper 
    return wrapped(*args, **kwargs) File "C:\Python34\lib\site-packages\oauth2client\client.py", line 1469, in 
__init__ 
    self.private_key = base64.b64encode(private_key) File "C:\Python34\lib\base64.py", line 62, in b64encode 
    encoded = binascii.b2a_base64(s)[:-1] TypeError: 'str' does not support the buffer interface 

Böyle bir türünü desteklemiyor .encode() ama gspread.authorize() kullanarak dize kodlamak çalıştı. Bu, [dokümantasyon] [1] olup, çok fazla yardım görmemektedir. Python 3.4 kullanıyorum. Ben dokümantasyon kodu önce sürümü için çalışır düşünüyorum 3.

DÜZENLEME:

credentials = SignedJwtAssertionCredentials.from_json(json_key['client_email'], json_key['private_key'], scope) 

Traceback (most recent call last): File "C:\Users\sony\Desktop\Python\new.py", line 9, in credentials = SignedJwtAssertionCredentials.from_json(json_key['client_email'], json_key['private_key'], scope) TypeError: from_json() takes 2 positional arguments but 4 were given [Finished in 1.0s with exit code 1]

[1]: http://gspread.readthedocs.org/en/latest/oauth2.html

credentials = SignedJwtAssertionCredentials.from_json(json_key) 

Traceback (most recent call last): File "C:\Users\sony\Desktop\Python\new.py", line 8, in credentials = SignedJwtAssertionCredentials.from_json(json_key) File "C:\Python34\lib\site-packages\oauth2client\client.py", line 1479, in from_json data = json.loads(s) File "C:\Python34\lib\json__init__.py", line 312, in loads s.class.name)) TypeError: the JSON object must be str, not 'dict'

+1

OAuth2 ve elektronik tablo-api - bu – eddyparkinson

cevap

5

Python3.x kullanıyorsunuz, string, Python 2.x ile aynı türde değil. Bunu baytlara dökmeniz gerekir (kodlayın). İşte

benim için iyi çalışıyor basit bir çözümdür: piton https://github.com/asm-products/gridspree ile

credentials = SignedJwtAssertionCredentials(
      json_key['client_email'] 
      , bytes(json_key['private_key'], 'UTF-8') 
      , scope) 
+0

"cast" çok yanlış işler . Bir kodlama (bayt olarak kod noktalarını nasıl temsil edeceğiniz hakkında bir standart) kullanarak dizeleri (unicode kod noktaları dizisi) "bayt" olarak kodlamanız gerekir. – Daenyth

İlgili konular