我有一个iOS应用程序,我在其中使用Google SDK登录用户。此时,我有一个访问令牌。用户可以拍摄视频并将其发布到YouTube。我想在我的 Node.js Express 服务器上调用一个 API,并让该 API(使用令牌(使用 YouTube API 发布视频。我看到有几个潜在的选择,但我真的不知道哪个适合我的情况。
是否可以执行此操作,或者是否必须从服务器端显示Google授权页面?如您所见,可能对整个事情感到困惑。
我构建了一个与支持Google Sign-In的Parse集成的iOS应用程序。 我们在客户端(iOS 端(对用户进行身份验证,并在客户端和服务器上存储身份验证和刷新令牌。 获得用户的身份验证令牌后,服务器可以代表该用户发出请求,没有问题。 只需确保在令牌过期时刷新令牌,并使客户端和服务器上的令牌彼此同步。
我们使用的是适用于 iOS 的旧版 Google 登录 SDK,因此在 GTMOAuth2Authentication.h
中调用authorizeRequest:completionHandler:
nil
请求会在客户端上自动刷新令牌。 使用新的 SDK,它应该是类似的,或者您始终可以使用刷新令牌在服务器端发出手动 Web 请求以获取新的身份验证令牌。
您可以在此处查看有关此实现的相关讨论。
该流可能如下所示:
-
让您的用户通过 Google 登录您的应用程序。 在登录回调中,应获取访问令牌、刷新令牌和令牌到期日期。 将这些值保存到后端的用户模型。
-
如果用户需要从您的应用程序向任何 Google API 发出请求,请通过 Google 的帮助程序方法发出请求。 您还可以设置标准
NSURLSession
请求,并将bearer
令牌值设置为身份验证令牌。 如果您需要代表用户从后端发出 API 请求,请以相同的方式发出异步请求,将用户的身份验证令牌添加到bearer
标头字段。 -
如果需要刷新客户端上的令牌,SDK 中的
signInSilenty
方法应会为你执行此操作。 如果需要在服务器端刷新令牌,请按照"使用刷新令牌"下的"对 Web 服务器应用程序使用 OAuth 2.0"中概述的过程进行操作。 刷新令牌后,将新值保存到用户模型。