2

我想为我所有的服务方法编写集成测试。这些方法使用 OAuth2 保护,iOS 客户端使用 gtm-oauth2 库。

我可以编写哪些代码来使用 OCUnit 测试用例中的用户名/密码凭据获取访问令牌?

这样做的任何人都可以节省我浏览 Google 代码的时间吗?

4

1 回答 1

3

这是一个三个阶段的过程。

首先,忘记用户名和密码。他们会把你引向错误的方向。

在某个离线点,您将需要生成一个刷新令牌。这将需要一个浏览器会话,因为 Google 将引导用户完成授权对话。获得刷新令牌后,您可以将其保存或嵌入到您的测试工具中(假设这是一个没有值得保护的秘密的虚拟用户。如果您愿意,可以将刷新令牌视为用户名和密码的 oauth 等效项。

现在在您的测试设置中,您将使用刷新令牌来请求访问令牌。这是一个简单的调用

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
refresh_token=1/6BMfW9j53gdGImsiyUH5kU5RsR4zwI9lUVX-tqf8JXQ&
grant_type=refresh_token

只要用户没有撤​​销授予您的应用程序的访问权限,响应就会包含一个新的访问令牌。此类请求的响应如下所示:

{
  "access_token":"1/fFBGRNJru1FQd44AzqT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
}

这些详细信息取自https://developers.google.com/accounts/docs/OAuth2WebServer#offline

于 2013-09-03T08:40:14.443 回答