我正在尝试在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。但我不知道我应该在哪里给这些常数?
答案 0 :(得分:2)
请检查Google Developers Console中是否已启用您使用的Gmail API和其他API。要启用它,请从API菜单中选择Gmail API,如果您还没有这样做,请点击启用(如下图所示)。
此外,您还可以查看此GitHub post或此SO post。