GoogleAuthException:UNREGISTERED_ON_API_CONSOLE在尝试附加到Google表格API V4

时间:2016-12-22 05:24:16

标签: android api google-sheets oauth-2.0 credentials

我遇到过这个当前项目的大量问题,可以在我在StackOverflow上发布的其他问题中找到(其中一个尚未解决),但是以允许的方式避开我的其他问题我测试,但实际上没有发布应用程序,我遇到了另一个错误; 在这段代码中:

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)

这就是我的Google API凭据的样子: enter image description here

我真的希望表单编辑很简单,例如如何在不使用API​​的情况下使用Sheet的直接JSON提要,但似乎我错了。

1 个答案:

答案 0 :(得分:2)

我今天遇到了同样的问题,我这样解决了:

首先,在您调试时,默认情况下,Android Studio使用的密钥库与您编译和签署APK时通常使用的密钥库不同。 这意味着您拥有两个不同的密钥库,两个不同的密钥具有两个不同的SHA1指纹。

默认情况下,用于调试的密钥库位于以下路径&#34;〜/ .android / debug.keystore&#34; 中,而您用于发布版本可以在任何地方,因为您必须手动创建它。

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#debugmode