我有一个基本的疑问。 我遇到过许多开源的OAuth libs.But所有这些都依赖于他们所服务的社交网络。 我的问题是,如果所有OAuth库都依赖于网站,或者是否有任何真正通用的OAuth库。
由于
答案 0 :(得分:1)
我不确定你对社交网络的依赖是什么意思.Outh是许多成熟的行业协议的标准化和组合智慧。它类似于当前使用的其他协议(Google AuthSub,AOL OpenAuth,Yahoo BBAuth,即将推出的API,Flickr API,Amazon Web Services API等)。每个协议都提供了一种用于交换访问令牌的用户凭证的专有方法
每个社交服务提供商都已实施这些OAuth规范,无论是Google / Yahoo / MSN / facebook。 唯一的区别可能在于每个服务提供商实施这些规范的方式。
简而言之,您还可以为您的应用程序提供OAuth,您只需要实现这些规范并设置服务器以让应用程序的使用者使用它。
答案 1 :(得分:1)
TL; DR OAuth2实现类似,但在某些细节上有所不同。如果某个库不是为特定的服务器实现而设计或测试的,那么它很可能根本无法使用它。我还没有看到一个支持多个提供商的库。
长篇故事: 虽然所有OAuth2实现都是类似的,但是devil就是详细的。 例如,比较Facebook和Google OAuth2协议的第1步(请求代码):
获取访问令牌也不完全兼容:
我不打算整理所有偏差的综合清单。 这只是我在阅读公共文档和试验API时注意到的一些例子。 VKontakte主要使用Facebook的怪癖,但在第2步返回JSON,类似于谷歌。
在你跳过所有篮球并获得访问令牌后,事情变得更加困难。 OAuth不会尝试涵盖API的结构或访问方式,因此您需要完全不同的例程来从每个网络中获取用户名和电子邮件。
答案 2 :(得分:0)
OAuth 1是一个规范,提供商需要遵守规范或说明偏离规范的原因。
OAuth 2还不是最终规范,但是草案仍然是,我认为大多数提供商都很好地遵守了草案。
简而言之,一个好的OAuth 1库可以与任何实现良好的提供程序一起使用。我对OAuth 2的经验较少,但我很确定那些库的标准化程度较低。