EvaOAuth是我很久之前的作品,也用在生产环境很久了,但是在线上调试及定位问题的时候,旧版的EvaOAuth以及现有的很多PHP库以及不能很好地解决问题,因此从实际出发,对EvaOAuth做了一次大的重构。
目前EvaOAuth可以看做是一个统一接口设计的PHP OAuth Client库,兼容OAuth1.0与OAuth2.0规范,可以通过10多行代码集成到任意项目中。新版的特性有:
项目代码托管在 https://github.com/AlloVince/EvaOAuth ,欢迎Star及Fork贡献代码。
1
kn007 2015-05-02 14:35:30 +08:00
沙发,主楼的github地址貌似多了个奇怪字符
|
2
kn007 2015-05-02 14:35:59 +08:00
已星标
|
3
AlloVince OP |
4
kn007 2015-05-02 14:38:05 +08:00
嗯嗯,其实挺想说一句:PHP 是最好的语言
|
5
yangmls 2015-05-02 21:58:49 +08:00
看了一下,感觉不如 thephpleague 的库强大
https://github.com/thephpleague/oauth2-client https://github.com/thephpleague/oauth1-client |
6
AlloVince OP @yangmls thephpleague的两个库我有考察过,由于两个库的工作流略有不同,如果想要集成,还需要自己写一个上层来统一,这个EvaOAuth已经做掉了。
另外在生产环境中,如果不支持完整的Log记录几乎是无法排查故障的,这一点上我目前还没有看到其他PHP OAuth库考虑进去,其实也是我自己造轮子的初衷。 其他不足的地方可以提出来,我还会不断完善 |
7
yangmls 2015-05-03 00:18:34 +08:00 1
@AlloVince 粗略看了一下,不足之处还是挺多的,比如 RefreshToken 好像不支持,没有看到相关的实现代码,比如 Client 里面定义了 password 验证 Eva\EvaOAuth\OAuth2\GrantStrategy\Password,但是并没有这个类。。。这个 unit test 是咋通过的?
log 这个,因为 OAuth 是标准,各个 OAuth 库只要作好 Exception,然后我们在外层 catch 就可以了,植入代码里面的 log 并没有必要。 把 OAuth1 和 OAuth2 分开也挺正常,毕竟连不同网站的 OAuth2 实现都有略微不同的地方,我给网站加第三方登录的时候,比较喜欢给每个网站一人一个action,然后在里面调用具体的类,以应付不同网站不太一样的地方,比如有些有refresh token,有些没有,有些fetch user info的流程不一样,有些字段不一样。 |
8
AlloVince OP @yangmls 偷懒被发现了(・∀・),确实目前OAuth2的Grant暂时只实现了Authorization Code方式,OAuth1的加密也没有实现RSA-SHA1,这些在实际项目中很少用到的部分会在后续版本补进来。
Refresh Token部分我比较犹豫要不要作为基础功能,因为某些知名服务压根不提供refresh token。 Log部分我的初衷是想记录完整的Request和Response,比如thephpleague中,Exception仅保存了Response,这对于定位问题来说是不太够的。 https://github.com/thephpleague/oauth2-client/blob/master/src/Exception/IDPException.php OAuth1.0和2.0,在我的项目中一般都会将两个版本的第三方用户信息都存在一个数据表,所以整合流程是必要的,如果数据表设计是分开的那么流程分开也OK,不过感觉分开做的工作量更大。 谢谢意见 |