带有 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 Provider

实现 2-legged OAuth 以获取用户特定数据以在 Javascript 中使用

带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)

带有 Gmail 和 OAuth2 的 MailCore2 仅在完全访问范围内发送,即 https://mail.google.com

如何在 C# 中使用带有服务帐户的 gmail api 或 google Oauth 来发送邮件?