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