Janrain的PHP-OpenID和谷歌/雅虎

Dan*_* G. 10 php openid yahoo janrain

我正在使用Janrain的PHP-OpenID 2.1.3,并且我已经设法让它与我尝试过的所有提供商合作,除了Google和Yahoo.这里的主要区别似乎是谷歌和雅虎,与大多数其他供应商,不使用用户特定的URL,而是让用户发现框架都在他们的终端-它抛出的默认Janrain框架为一个循环,然后它尝试开始auth请求.

从我所看到的情况看起来可能是YADIS发现错误,因为发现是在谷歌或雅虎的结尾,所以应该可以绕过它,但我不确定.对我来说这对我来说都是非常非正式的学习经历,而且我没有找到可以帮助我解决这个问题的文档.任何提示将非常感谢.

编辑:我遇到的具体问题是,当为Google或Yahoo URL调用begin()函数时,我得到一个null返回.此功能可在Auth/OpenID/Consumer.php中找到,以供参考.

mig*_*rso 10

好的,我终于修复了库...我在这里解释了一切(你也可以在我的修改后下载php-openid库).

我需要做Paul Tarjan所建议的,但是,我还需要修改Auth_OpenID_detectMathLibrary并将static关键字添加到很多功能中.之后它似乎工作得很好虽然它不是一个理想的解决方案......我认为有人应该用PHP 5重写整个库...


And*_*ica 6

我在Windows XP上遇到了同样的问题.通过激活卷曲扩展来修复.要在php.ini中取消注释该行

extension=php_curl.dll
Run Code Online (Sandbox Code Playgroud)

通过删除; 在它面前,如果有的话.重启apache.

此外,在Windows上正常工作,您需要将Auth_OpenID_RAND_SOURCE定义为null,因为在Windows中您没有随机源.您可以通过添加行来完成此操作

define('Auth_OpenID_RAND_SOURCE', null);
Run Code Online (Sandbox Code Playgroud)

在第一个代码行之前的CryptUtil.php中

if(!defined('Auth_OpenID_RAND_SOURCE')){
Run Code Online (Sandbox Code Playgroud)

即使未启用curl,API也应该通过使用Auth_Yadis_PlainHTTPFetcher来通过HTTP进行通信.对于谷歌和雅虎,你需要https,所以它只有在启用open_ssl时才有效(Auth_Yadis_PlainHTTPFetcher :: supportsSSL必须返回true).