在使用了 google API 和其他视频服务提供商 API 之后,我学到了很多关于身份验证的知识。oAuth 和 AuthSub 是谷歌用来向用户帐户验证第三方 Web 应用程序的两种方法。
这个过程起初可能看起来很混乱,但一旦你理解它,它就不会太糟糕。下图显示了 AuthSub 过程。

- 当 Web 应用程序需要访问用户的 Google 服务时,它会对 Google 的授权代理服务进行 AuthSub 调用。
- 授权服务通过提供访问请求页面进行响应。这个由 Google 管理的页面会提示用户授予/拒绝访问其 Google 服务的权限。可能首先要求用户登录他们的帐户。
- 用户决定是授予还是拒绝对 Web 应用程序的访问。如果用户拒绝访问,他们将被定向到 Google 页面,而不是返回 Web 应用程序。
- 如果用户授予访问权限,授权服务会将用户重定向回 Web 应用程序。重定向包含一个适合一种用途的授权令牌;它可以兑换成长期存在的代币。
- Web 应用程序通过请求联系 Google 服务,使用授权令牌充当用户的代理。
- 如果 Google 服务识别出令牌,它会提供请求的数据。
http://code.google.com/apis/accounts/docs/AuthSub.html#AuthProcess
当您请求进行身份验证并且用户登录到他/她的 google 帐户时,在他/她授予您的应用程序在其帐户中执行操作的权限之前,如果您的域尚未在 google 注册,用户将获得一个讨厌的红色框告诉他们要小心,因为他们将要访问的应用程序没有向他们注册。
这些方法相对于旧式用户名和密码的优势(在我看来)如下:
- 增强用户的安全性:用户不必向您提供他们的用户名和密码,他们必须登录到 google,您将获得一个访问令牌,您将使用该令牌进行任何进一步的 API 调用。如果他们愿意,用户可以从谷歌内部撤销对您的应用程序的访问。
- 该过程可以向用户保证您的应用程序是“合法的”。如果用户必须通过 google 登录并允许您的应用程序,如果您的域已在 google 注册,它可能看起来不错。
- 令牌可以提升为会话令牌:这意味着您不必每次需要请求访问 google 用户帐户时都要求用户登录,只需使用会话令牌(您必须安全地保存在某处)你就完成了。
- 一旦你理解了这个过程,验证用户就很简单了。
- (未验证)如果用户更改了密码,您不必更新安全令牌。
- 最后,如果您使用 oAuth,您可以创建一个界面,以便您在连接到其他 Web 服务(如 Vimeo)时轻松验证用户身份!
综上所述,我想您可以弄清楚为什么使用用户名和密码(这是 ClientLogin 所做的)连接到用户帐户是个坏主意。其他身份验证方法允许您做同样的事情(请求访问)并增加许多优势。
可以在此处找到有关如何使用 AuthSub 对用户进行身份验证的代码,它几乎是即插即用的。只需确保将 $_SESSION['sessionToken'] 保存到更永久的位置,例如数据库。
http://code.google.com/apis/youtube/2.0/developers_guide_php.html#AuthSub_for_Web_Applications