GoogleAuthException: UNRANT_ON_API_CONSOLE при попытке добавить в Google Sheets API V4
Я столкнулся с множеством проблем с этим текущим проектом, которые можно найти в других вопросах, которые я опубликовал в Stackru (один из которых не решен), но после того, как я уклонился от другой проблемы таким образом, чтобы я мог проверить, но на самом деле не выпускать приложение, я столкнулся с другой ошибкой; В этом коде:
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("oscarcookeabbott@gmail.com");
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)
Вот как выглядят мои учетные данные API Google:
Я действительно надеялся, что редактирование листа будет простым, например, как вы можете использовать прямую JSON-подачу листа без использования API, но, похоже, я ошибся.
1 ответ
У меня была такая же проблема сегодня, и я решил ее следующим образом:
Во-первых, при отладке Android Studio по умолчанию использует хранилище ключей, отличное от того, которое обычно используется при компиляции и подписании APK для выпуска. Это означает, что у вас есть два разных хранилища ключей с двумя разными ключами, которые имеют два разных отпечатка пальца SHA1.
Хранилище ключей, используемое для отладки, по умолчанию расположено по следующему пути "~ /.android / debug.keystore", в то время как тот, который вы используете для версии выпуска, может быть где угодно, так как вы должны создать его вручную.,
Хранилище ключей, созданное Android Studio для вашей отладочной версии, содержит ключ с именем androiddebugkey, и его пароль по умолчанию - android, такой же, как пароль для хранилища ключей.
Теперь вот что вы должны сделать:
1) Откройте командную строку
2) Используя команду keytool, наберите keytool -exportcert -keystore <path-to-debug-or-production-keystore> -list -v
3) Введите пароль (android), получите ключ SHA1 из того, что он вам показывает, и добавьте его в интерфейс API.
https://developer.android.com/studio/publish/app-signing.html