我有一个 Android 应用程序,它可以访问 Gmail Atom 收件箱提要,以只读方式访问未读电子邮件(这就是我所需要的)。而且,它最近停止工作了。
它正在使用OAuth2 and 谷歌验证工具。这是它的工作原理,在服务中使用 AsyncTask:
首先,获取令牌:
String scope = "oauth2:https://mail.google.com/mail/feed/atom/";
token = GoogleAuthUtil.getToken(context, accountName ,scope );
然后用它来读取 feed:
HttpURLConnection connection = (HttpURLConnection) new URL(urlString).openConnection();
connection.addRequestProperty("Authorization", "Bearer " + token);
connection.connect();
//get the insputStream, read it, etc.
问题是这是工作约。 1 个月(2014 年 5 月/6 月)。该应用程序甚至在 GooglePlay 上发布并拥有用户。它在不同的设备、不同的帐户等上工作和测试。我不能 100% 确定它在所有安装上停止工作,但我无法让它恢复为我自己和我的设备工作。该应用程序访问了大约的提要。每 10-20 分钟一次(根据用户设置)。
您知道为什么会发生这种情况吗?
几天来,我仍然可以获取令牌,但响应仅未经授权 (401)回复:
<HTML>
<HEAD><TITLE>Unauthorized</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1><H2>Error 401</H2>
</BODY>
</HTML>
- I tried:
- 每次都使令牌无效
- 摆弄范围
- 撤销我的帐户设置中的访问权限
- 重新安装
- 更新 Google-Play-Services 库
等等,没有结果。
经过一些研究,我知道需要生成一个 client-id 来访问各种 google API。我能够生成这样的ID。
我尝试使用该 ID - 将其包含在范围中并从签名的 APK 运行应用程序。但我在列表中找不到任何 API (https://console.developers.google.com https://console.developers.google.com) 可以是 GMAIL 或 ATOM FEED,或者任何与 gmail 相关的内容。所以我无法使用它。
任何帮助表示赞赏。
编辑 - 已解决谷歌解决了这个问题,更新了一些东西:-) - 现在它又可以工作了。