2016-12-22 3 views
0

Я столкнулся с множеством проблем с этим текущим проектом, который можно найти в других вопросах, которые я опубликовал в StackOverflow (один из которых не решен) , но после того, как уклонился от моей другой проблемы таким образом, чтобы я мог протестировать, но не выпустил приложение, я столкнулся с другой ошибкой; В этом коде:GoogleAuthException: UNREGISTERED_ON_API_CONSOLE при попытке добавить в Google Таблицы API V4

public class AsyncSheetUpdater extends AsyncTask<String, Void, String> { 

    Master activity; 

    @Override 
    protected String doInBackground(String... urls) { 
     GoogleAccountCredential credential; 

     Sheets mService; 

     credential = GoogleAccountCredential.usingOAuth2(activity.getApplicationContext(), Collections.singletonList(SheetsScopes.SPREADSHEETS)) 
       .setBackOff(new ExponentialBackOff()) 
       .setSelectedAccountName("[email protected]"); 

     HttpTransport transport = AndroidHttp.newCompatibleTransport(); 
     JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 

     mService = new Sheets.Builder(transport, jsonFactory, credential) 
       .setApplicationName(activity.getString(R.string.app_name)) 
       .setSheetsRequestInitializer(new SheetsRequestInitializer("AIzaSyBreJks4awhrSbyqGkZhgR4rAA61vg0t-g")) 
       .build(); 

     ValueRange values = new ValueRange(); 
     values.set("EMAIL", "[INSERT EMAIL]"); 
     values.set("AUTH", "[INSERT DATE]"); 
     values.set("SUB", "[INSERT DATE + MONTH]"); 

     try { 
      mService.spreadsheets().values().append("1meAAvjdPmghn6wl_IKc-_NJx_M85I_yqsn4Nwm_j_X0", "Users", values) 
        .setValueInputOption("RAW") 
        .execute(); 
     } catch (IOException e) { 
      Log.e("DEBUG", "SheetUpdate Exception: ", e); 
     } 

     return null; 
    } 
} 

Он возвращает эту ошибку:

com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException 
                   at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:301) 
                   at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:868) 
                   at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419) 
                   at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352) 
                   at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469) 
                   at com.pybuspr.listeau.AsyncSheetUpdater.doInBackground(AsyncSheetUpdater.java:58) 
                   at com.pybuspr.listeau.AsyncSheetUpdater.doInBackground(AsyncSheetUpdater.java:20) 
                   at android.os.AsyncTask$2.call(AsyncTask.java:304) 
                   at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                   at java.lang.Thread.run(Thread.java:761) 
                  Caused by: com.google.android.gms.auth.GoogleAuthException: UNREGISTERED_ON_API_CONSOLE 
                   at com.google.android.gms.auth.zze$1.zzbt(Unknown Source) 
                   at com.google.android.gms.auth.zze$1.zzbu(Unknown Source) 
                   at com.google.android.gms.auth.zze.zza(Unknown Source) 
                   at com.google.android.gms.auth.zze.zzc(Unknown Source) 
                   at com.google.android.gms.auth.zze.getToken(Unknown Source) 
                   at com.google.android.gms.auth.zze.getToken(Unknown Source) 
                   at com.google.android.gms.auth.zze.getToken(Unknown Source) 
                   at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
                   at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:269) 
                   at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:294) 

Это то, что мой Google APIs Credentials выглядеть следующим образом: enter image description here

Я действительно надеялся, что редактирование листа происходит быть простым, например, как вы можете использовать прямую подачу JSON листа без использования API-интерфейсов, но, похоже, я ошибся.

ответ

2

У меня была такая же проблема сегодня, и я решил это так:

Во-первых, при отладке, Android студии, по умолчанию, использовать различные хранилища ключей, чем тот, который обычно используется при компиляции и подписать ваш APK для выпуска. Это означает, что у вас есть разные хранилища ключей с два разные ключи, у которых есть два разные SHA1 отпечатки пальцев.

Хранилище ключей, который используется для отладки по умолчанию находится по следующему пути «~/.android/debug.keystore», в то время как один используется для версии может быть там, где вы хотите, так как вы должны вручную создать его.

Хранилище ключей, созданный Android Studio для отладки версии содержит ключ с именем androiddebugkey, и это по умолчанию пароль андроида, такой же, как пароль для хранилища ключей.

Теперь, вот что вы должны сделать:

1) Откройте командную строку

2) С помощью команды Keytool типа keytool -exportcert -keystore <path-to-debug-or-production-keystore> -list -v

3) Введите пароль (андроид) , получите ключ SHA1 из того, что он отображает, и добавьте его в свой интерфейс API.

https://developer.android.com/studio/publish/app-signing.html#debugmode