Gmail for Android app的OAuthentication错误

时间:2016-10-20 00:08:00

标签: java android android-asynctask google-oauth gmail-api

我正在尝试在Android上为Gmail构建一个客户端应用程序,(我已经看到有很多问题)。

(我已经看到类似这样的问题:How to integrate Gmail Api in android app。但我的问题不在于SHA1-Key)

我正在使用Andorid开发者网站中提供的链接:https://developers.google.com/gmail/api/quickstart/android

我已基于此开展了第一项活动,并在Google开发者控制台中创建了API访问权限。

我正在使用usingOAuth获取凭据,

mCredential = GoogleAccountCredential.usingOAuth2(
            getApplicationContext(), Arrays.asList(SCOPES))
            .setBackOff(new ExponentialBackOff());

我能够查看手机中配置的邮件ID列表,当我选择一个时,我在异步服务中调用该方法:

public MakeRequestTask(GoogleAccountCredential credential) {
        HttpTransport transport = AndroidHttp.newCompatibleTransport();
        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
        mService = new com.google.api.services.gmail.Gmail.Builder(
                transport, jsonFactory, credential)
                .setApplicationName("mailclient")
                .build();
    }

这仅适用于Async服务中的onCancelled()方法,并提供错误

10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err: {
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:   "code" : 403,
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:   "errors" : [ {
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     "domain" : "usageLimits",
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     "message" : "Access Not Configured. Gmail API has not been used in project 608941808256 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/gmail/overview?project=608941808256 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     "reason" : "accessNotConfigured",
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     "extendedHelp" : "https://console.developers.google.com/apis/api/gmail/overview?project=608941808256"
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:   } ],
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:   "message" : "Access Not Configured. Gmail API has not been used in project 608941808256 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/gmail/overview?project=608941808256 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err: }
10-20 01:58:23.456 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at sevenre.dinesh.de.com.mailclient.MainActivity$MakeRequestTask.getDataFromApi(MainActivity.java:358)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at sevenre.dinesh.de.com.mailclient.MainActivity$MakeRequestTask.doInBackground(MainActivity.java:340)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at sevenre.dinesh.de.com.mailclient.MainActivity$MakeRequestTask.doInBackground(MainActivity.java:320)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:292)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-20 01:58:23.457 13659-13659/sevenre.dinesh.de.com.mailclient W/System.err:     at java.lang.Thread.run(Thread.java:818)
10-20 01:58:32.709 13659-13659/sevenre.dinesh.de.com.mailclient W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.

应用尝试连接的网址不合适

https://console.developers.google.com/apis/api/gmail/overview?project=608941808256

我不确定我在这里做错了什么,我认为我唯一要做的就是在应用程序的某处提供API或客户端ID。但我不知道我应该在哪里给这些常数?

1 个答案:

答案 0 :(得分:2)

请检查Google Developers Console中是否已启用您使用的Gmail API和其他API。要启用它,请从API菜单中选择Gmail API,如果您还没有这样做,请点击启用(如下图所示)。

enable Gmail API

此外,您还可以查看此GitHub post或此SO post