Android Google日历授权问题

时间:2011-04-14 22:35:53

标签: android oauth calendar google-calendar-api

我正在尝试创建一个使用OAuth访问用户Google日历的应用。我有适当的代码来获取所有正确的令牌,并将它们保存到一些首选项中。顺便说一句,我使用教程here来完成这一切。我已成功更改范围并请求URL,以便我获得所需的令牌。当我真正尝试使用令牌时,问题出现了。而不是日历信息,我得到一些HTML,上面写着“未知的授权标题错误401”。我正在使用的请求网址是:

 https://www.google.com/calendar/feeds/default/allcalendars/full

,范围是:

 http://www.google.com/calendar/feeds/

我尝试用我的电子邮件地址(也就是我用于OAuth的地址)替换'default'无济于事。我使用的是错误的网址吗?如果没有,还有什么可能导致此错误?我一直在寻找几天找到使用OAuth访问日历的人,但我发现的一切都是让人放弃,因为它太难或不起作用。

编辑:

我相信我的标题是正确的,这是一个例子:

 OAuth oauth_token="************-********-**********-****", 
 oauth_consumer_key="anonymous", 
 oauth_version="1.0", 
 oauth_signature_method="HMAC-SHA1", 
 oauth_timestamp="1303161387", 
 oauth_nonce="*******************", 
 oauth_signature="*******************"

这是直接从我的应用程序中提取的,从我能找到的内容看起来对我来说,但我仍然收到上述错误(未知授权标题错误401)。

1 个答案:

答案 0 :(得分:2)

授权标题必须是“授权:OAuth oauth_nonce =”deadbeefdeadbeef“oauth_version =”1.0“....

http://code.google.com/apis/accounts/docs/OAuth_ref.html#RequestToken。据推测,您可以在查询字符串或POST正文中使用授权参数,但我没有尝试过。

<小时/> 如下面的评论中所述,Google现在至少使用日历源,添加'gsessionid ='查询字符串并重定向;所以重定向处理程序必须创建一个新的随机数和时间戳,并创建一个新的签名,确保以正确的字典顺序(在任何oauth_变量之前)将gsessionid添加到基本签名字符串。