接收跨客户端Google+授权码,以便在iOS上无需借阅图书馆进行离线访问

时间:2014-09-09 09:21:25

标签: ios google-plus

很有趣,但我无法找到使用HTTP请求接收Google+身份验证代码的说明,以便在没有iOS Google+资料库的情况下进行离线访问。

虽然它的集成示例非常简单,但我不想在我的iOS应用中添加额外的20mb权重。

我尝试了这里描述的方法 https://developers.google.com/accounts/docs/OAuth2WebServer#offline

但是在服务器clientId的情况下,我收到消息abount错误重定向uri。

有人能给我建议吗?

1 个答案:

答案 0 :(得分:0)

您可以采取两种方法,可能/可能不适合您。

  • 已安装的内部存储客户端密钥的应用流程
  • 网络视图中的网络流程。

已安装的应用流程

您可能需要使用具有urn:ietf:wg:oauth:2.0:oob重定向URI的the offline OAuth v2 / installed app flow,使您能够重定向回浏览器,从那里您可以获得代码来交换令牌。< / p>

在您的情况下,我猜测您没有创建正确的客户端类型(已安装的应用程序),这阻止了*:oob重定向。

以这种方式处理登录的安全性较低 - 如果用户可以从您的应用程序中提取客户端密钥,他们可以执行诸如授权恶意3P应用程序以访问您的应用程序数据之类的错误。

网络登录流程

另一种方法是使用WebView中的网络登录流程,这可能是Apple拒绝您的应用程序,也是不安全的。

您要做的是在您的网络服务器上托管登录解决方案,使用JavaScript web signin flow启动登录,请求离线访问,然后交换生成的代码以获取访问令牌和刷新令牌。

然后,您需要在设备上存储刷新令牌/访问令牌,并在需要访问用户数据时交换它以获取访问令牌,或者交换刷新令牌服务器端并将承载令牌传递回iOS应用程序时它需要访问。这又很糟糕,因为它可能会将其他应用暴露给用户授权凭据,并可能允许恶意3P访问用户数据。

我无法推荐这两种方法。除了应用程序大小影响之外,您是否有其他原因无法使用该库?我将看看是否有一种避免框架文件大小的好方法。