【问题标题】:Android Google Calendar Authorization ProblemAndroid谷歌日历授权问题
【发布时间】:2011-04-14 22:35:53
【问题描述】:

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

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

范围是:

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

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

编辑:

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

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

这是直接从我的应用程序中提取的,我发现它看起来对我来说很合适,但我仍然收到上述错误(Unknown Authorization Header Error 401)。

【问题讨论】:

    标签: android oauth calendar google-calendar-api


    【解决方案1】:

    授权标头需要是“授权:OAuth oauth_nonce="deadbeefdeadbeef" oauth_version="1.0" ....

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


    正如下面的 cmets 所指出的,Google 现在至少在日历提要中附加了一个“gsessionid=”查询字符串并重定向;因此重定向处理程序必须创建一个新的随机数和时间戳,并创建一个新签名,确保以正确的字典顺序(在任何 oauth_ 变量之前)将 gsessionid 添加到基本签名字符串中。

    【讨论】:

    • 标题已经是这样了,但不知何故它不喜欢它。我将在我的问题中添加一个标题示例。
    • 引号中的所有值都使用 oauth 规范的特殊编码进行 urlencoded,对吗?意思是,除了 [^0-9A-Za-z._~-] 之外的任何东西都是 %xx 编码的。
    • 而且都在一条线上,对吧?没有像你展示的那样分成几行。
    • 我想你必须这样做,如果你一直获得长期令牌,但我只是把东西扔在那里。我知道来自 Google 服务器的这些简洁的回复有多烦人。昨天我终于提出了第一个成功的请求。首先,当我从文件中提取字符串时,我没有从字符串中删除换行符,然后我没有为联系人列表使用正确的 URL;每个错误都会收到 400 Bad Request 错误。
    • ...这提示我,“嘿!用你自己的脚本试试他的 URL,笨蛋!”所以我做了。你得到同样的错误。所以等一下,也许我们可以解决这个问题。
    猜你喜欢
    • 2011-04-27
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 2019-12-16
    相关资源
    最近更新 更多