带有 2-legged OAuth 的 Gmail atom 提要收到 401 错误
Posted
技术标签:
【中文标题】带有 2-legged OAuth 的 Gmail atom 提要收到 401 错误【英文标题】:Gmail atom feed with 2-legged OAuth receive 401 error 【发布时间】:2014-08-12 06:16:23 【问题描述】:我们遇到了带有 2-legged OAuth 的 Gmail atom 提要问题,错误消息是“401 未授权”。
错误信息如下所示。
<html>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
直到上周,我们在使用 Gmail atom 提要时还没有遇到任何问题。从本周开始,即使我们对 Gmail atom 提要和 oauth 没有任何更改,我们也遇到了这个问题。 现在,并非所有用户(50,000 个帐户)都会出现此问题,但此问题越来越多。
看来这个问题是谷歌这边造成的。
有人遇到同样的问题吗?
源代码如下。
private GoogleOAuthParameters mOauthParameters;
private OAuthSigner mSigner;
private final String SCOPE = "https://mail.google.com/mail/feed/atom";
GoogleService service;
String result = null;
mOauthParameters = new GoogleOAuthParameters();
mSigner = new OAuthHmacSha1Signer();
mOauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
mOauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
service = new GoogleService("gmail","feed");
service.setOAuthCredentials(mOauthParameters, mSigner);
service.setConnectTimeout(timeOut);
service.setReadTimeout(timeOut * 5);
GDataRequest request = service.createFeedRequest(new URL(SCOPE +"?xoauth_requestor_id=" + email));
request.execute();
InputStream is = null;
try
is = request.getResponseStream();
StringBuffer out = new StringBuffer();
byte[] buffer = new byte[4094];
int readSize;
while ( (readSize = is.read(buffer)) != -1)
out.append(new String(buffer, 0, readSize));
result = out.toString();
catch (Exception e)
throw e;
finally
is.close();
我需要你的帮助。
请查看我们的源代码或其他示例,了解带有 2-legged OAuth 的 gmail atom 提要。
问候。
【问题讨论】:
恐怕我无法帮你解决这个问题,但我也遇到了这个问题。与您不同,我使用 OAuth 2.0 和服务帐户让我的应用程序代表我们的用户执行操作(基本上它的 OAuth 2.0 相当于 2-legged OAuth 1.0),我看到的错误消息与您报告的完全相同.当我记录所有失败时,这很混乱,现在基本上都失败了!已向 Google 发了推文,但我怀疑我会得到回复... Gmail-Notifier 也有同样的问题。 github.com/jashephe/Gmail-Notifier/issues/20 我有同样的问题,即使是 google oauth 游乐场也有问题。 我也有同样的问题,你可以看看:http://***.com/questions/24366704/access-to-gmail-atom-feed-with-oauth2-from-android-app-stopped-working 有人向谷歌报告过吗? 编辑 - 2014 年 7 月 1 日解决 现在,问题已在我们的域中解决。 【参考方案1】:确实,这似乎是 Google 的问题。 我鼓励您使用 的 菜单中的报告错误/提供反馈 选项或在Gmail 中向Google 报告此问题(发送反馈 选项,来自 菜单)。
【讨论】:
感谢您的 cmets。我们向 Google 报告了这个错误。 感谢您报告该问题,工程师正在努力修复。 问题解决了吗?我的代码现在仍然无法工作。 有这方面的消息吗?我们正在为我们的 VLE 使用 gmail 块,学生现在无法访问他们的 UCAS 电子邮件和诸如此类的东西,这是在最糟糕的时候出现的:( @ConnWarwicker 对于我们(也是在内部系统中集成了 Gmail 的教育机构)而言,现在情况已经解决。如果您还没有,我建议您再试一次。祝你和你的学生好运。以上是关于带有 2-legged OAuth 的 Gmail atom 提要收到 401 错误的主要内容,如果未能解决你的问题,请参考以下文章
在 .NET 中使用 OAuth2.0 2-legged 方法访问 Jira API
实现 2-legged OAuth 以获取用户特定数据以在 Javascript 中使用
带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)
带有 Gmail 和 OAuth2 的 MailCore2 仅在完全访问范围内发送,即 https://mail.google.com