具有两条腿OAuth的Gmail原子Feed收到401错误

时间:2014-06-21 19:20:35

标签: google-api gmail google-oauth google-api-java-client google-oauth-java-client

我们遇到了包含两条腿OAuth的Gmail原子Feed问题,错误消息是“401未经授权”。

错误信息如下所示。

<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

直到上周,我们使用Gmail原子Feed都没有问题。从本周开始,即使我们对Gmail原子Feed和oauth没有任何变化,我们也遇到了这个问题。 现在,所有用户(50,000个帐户)都不会出现此问题,但此问题越来越多。

似乎这个问题是由Google方面引起的。

有没有人有同样的问题?

源代码如下所示。

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();
} 

我需要你的帮助。

请查看我们的源代码或其他样本,了解具有两条腿OAuth的gmail atom feed。

问候。

1 个答案:

答案 0 :(得分:3)

确实,这似乎是Google的问题。 我们建议您使用OAuth 2.0 Playground(?)菜单或Gmail中的报告错误/提供反馈选项向Google报告此情况(发送反馈选项,来自cogwheel菜单。)