【问题标题】:OAuth request token for an installed application已安装应用程序的 OAuth 请求令牌
【发布时间】:2010-04-03 08:51:53
【问题描述】:

我正在尝试使用/理解 Google 请求令牌机制。我打算将它用于我已经开始开发的应用程序,以使用 OpenSocial API 访问 Orkut 数据。

我阅读了这个document,它解释了为已安装的应用程序获取令牌的步骤。本文档告诉您使用 Google OAuth API 中的 OAuthGetRequestToken 方法来获取请求令牌。访问此功能的手册 (available here)。但是需要的参数oauth_consumer_key要求“域识别第三方Web应用程序”,但是我没有域,它是一个已安装的应用程序。

所以我的问题是,在这种情况下我应该在这个参数中输入什么?

我正在使用oauth_playground 运行我的测试。

谢谢

【问题讨论】:

  • 您是否在 Google 上注册了您的应用?
  • 我没有。据我所知,这仅适用于 Web 应用程序(具有域)。在我的例子中,它是一个本地应用程序,安装在用户计算机中。

标签: javascript oauth social-networking opensocial


【解决方案1】:

根据我在文档中阅读的内容,以下有关获取请求令牌的说明意味着您只需将“匿名”作为消费者密钥传递...

“1. 已安装的应用程序联系 Google 授权服务,请求一项或多项 Google 服务的请求令牌。该请求使用“匿名”消费者密钥/秘密进行签名。” (OAuthForInstalledApps)

【讨论】:

  • 是的,我已经阅读过它并尝试使用 oauth playground (googlecodesamples.com/oauth_playground) 对其进行测试。它适用于 Open Social 等范围,但不适用于我尝试使用的 Orkut。不过还是谢谢
【解决方案2】:

诀窍是创建一个混合身份验证过程。您在自己拥有的域中注册 Web 应用程序,通过 Web 应用程序的 OAuth 流程授权用户使用 Web 应用程序,然后实施一种机制,他们安装的应用程序可以通过该机制从 Web 应用程序中获取该授权。

我对此的想法是,已安装的应用程序会向您的网站发送密钥对请求。它将收到一个启动密钥和一个授权密钥,您可以将这两个密钥存储在网站的数据库中以供一次性使用。

然后应用程序将使用任何机制来启动外部浏览器,将其指向 yourdomain.com/authorizestart.php?initiate=[初始化代码]。该站点将代码存储在会话变量中,然后将用户发送到 Google 进行身份验证。当身份验证成功并且 Google 将下一个令牌发送回用户时,您将其存储在与启动密钥相关的数据库条目中。

用户关闭浏览器,点击您应用中的“完成”按钮,然后应用向 yourdomain.com/tokenretrieve.php?authorize=[authorize key] 发送请求

您的网站查找 Google 令牌并将其传回,应用完成 Oauth 过程。

这样做的问题是您必须与应用程序共享您在注册过程中创建的“消费者秘密”。有人可能会反编译它或尝试捕获其输出并发现您的密钥,这是加密来自 Google 服务器的响应的方法的一部分。也就是说,这比使用“匿名”作为您的消费者秘密更糟糕吗?

【讨论】:

    猜你喜欢
    • 2015-09-25
    • 1970-01-01
    • 2015-09-11
    • 2011-02-03
    • 2014-09-04
    • 2012-06-22
    • 2016-08-29
    • 2012-06-22
    • 2016-05-11
    相关资源
    最近更新 更多