5

Problema: Sto usando Python Script Samples by Google per caricare l'apk al Play Store e ottenere l'elenco delle app pubblicate tramite il mio account (list_apks.py e upload_apk.py). Tuttavia recentemente ha iniziato a rompersi. Ho provato ad aggiornare i pacchetti come google-api-python-client, oath2client ecc. Facendo pip install --update packagename ma non è stato d'aiuto.AttributeError: 'modulo' oggetto non ha attributo 'SignedJwtAssertionCredentials'

registri:

questo se mentre messa in vendita di apk di:

Determining latest version for my.package.name... 
error 25-Feb-2016 06:30:52 Traceback (most recent call last): 
error 25-Feb-2016 06:30:52  File "list_apks.py", line 80, in <module> 
error 25-Feb-2016 06:30:52  main() 
error 25-Feb-2016 06:30:52  File "list_apks.py", line 46, in main 
error 25-Feb-2016 06:30:52  credentials = client.SignedJwtAssertionCredentials(
error 25-Feb-2016 06:30:52 AttributeError: 'module' object has no attribute 'SignedJwtAssertionCredentials' 
build 25-Feb-2016 06:30:52 Found latest APK version: 
build 25-Feb-2016 06:30:52 Generated new APK version: 1 

Questo apk è durante il caricamento:

25-Feb-2016 06:33:30 Uploading APK... 
25-Feb-2016 06:33:30 Traceback (most recent call last): 
25-Feb-2016 06:33:30  File "upload_apk.py", line 115, in <module> 
25-Feb-2016 06:33:30  main(sys.argv) 
25-Feb-2016 06:33:30  File "upload_apk.py", line 62, in main 
25-Feb-2016 06:33:30  credentials = client.SignedJwtAssertionCredentials(
25-Feb-2016 06:33:30 AttributeError: 'module' object has no attribute 'SignedJwtAssertionCredentials' 

Codice sniplet:

import argparse 

from apiclient.discovery import build 
import httplib2 
from oauth2client import client 


SERVICE_ACCOUNT_EMAIL = (
    'myaccountemail.com') 

# Declare command-line flags. 
argparser = argparse.ArgumentParser(add_help=False) 
argparser.add_argument('package_name', 
         help='The package name. Example: com.android.sample') 


def main(): 
    # Load the key in PKCS 12 format that you downloaded from the Google APIs 
    # Console when you created your Service account. 
    f = file('mykeyname.p12', 'rb') 
    key = f.read() 
    f.close() 

    # HERE IS THE EXCEPTION 
    credentials = client.SignedJwtAssertionCredentials(
     SERVICE_ACCOUNT_EMAIL, 
     key, 
     scope='https://www.googleapis.com/auth/androidpublisher') 
    http = httplib2.Http() 
    http = credentials.authorize(http) 
    ... 

Cos'altro posso provare? Apprezzerei il tuo aiuto.

risposta

15

Finalmente dopo tanti giorni, sono riuscito a trovare una risposta. Risulta che la classe SignedJwtAssertionCredentials è stata rimossa dal pacchetto python oath2client nell'aggiornamento 2.0.0. Non era più sotto oauth2client.client. Il comportamento è stato spostato su oauth2client.service_account.ServiceAccountCredentials.

In seguito ha lavorato per me:

import argparse 

from apiclient.discovery import build 
from oauth2client.service_account import ServiceAccountCredentials 

import httplib2 
from oauth2client import client 

SERVICE_ACCOUNT_EMAIL = ('myaccountemail.com') 

# Declare command-line flags. 
argparser = argparse.ArgumentParser(add_help=False) 
argparser.add_argument('package_name', 
        help='The package name. Example: com.android.sample') 

def main(): 
    key='mykeyname.p12' 
    scope = 'https://www.googleapis.com/auth/androidpublisher' 

    credentials = ServiceAccountCredentials.from_p12_keyfile(
     SERVICE_ACCOUNT_EMAIL, 
     key, 
     scopes=[scope] 
) 
    http = httplib2.Http() 
    http = credentials.authorize(http) 
    .... 

Fonte:

Problemi correlati