PHP-OpenID и Google/Yahoo Janrain

Да, мы делаем это здесь, и я не могу этого вынести. Одна из проблем, с которыми мы сталкиваемся здесь, - если есть проблема с базой данных (подключение, повреждение и т. Д.), Все журналы прекращаются. Моя другая большая проблема с этим состоит в том, что трудно проследить, чтобы отследить проблемы. У нас также есть проблемы с тем, что журналы таблиц занимают слишком много места, и нам приходится беспокоиться об их усечении, когда мы перемещаем базы данных, потому что наши журналы очень большие.

Я думаю, что это неуклюжий по сравнению с файлами журналов. Мне трудно увидеть «большую картину», хранящуюся в базе данных. Я признаю, что я человек из файла журнала, мне нравится возможность открывать текстовый файл и просматривать его (regex) вместо использования sql для поиска чего-либо.

В последний раз, когда я работал, у нас были файлы журнала на 100 мегабайт плюс. Их немного сложно открыть, но если у вас есть правильный инструмент, это не так уж плохо. У нас была система для записи сообщений тоже. Вы можете быстро просмотреть файл и определить, какой набор записей журнала принадлежит какому процессу.

10
задан Dan G. 22 June 2009 в 22:15
поделиться

9 ответов

Хорошо, я наконец-то исправил библиотеку ... Я объяснил все здесь (вы также можете скачать библиотеку php-openid после моих изменений).

Мне нужно было сделать то, что предложил Пол Тарджан, но также мне нужно было изменить Auth_OpenID_detectMathLibrary и добавьте ключевое слово static во многие функции. После этого, похоже, все работает отлично, хотя это не идеальное решение ... Я думаю, что кто-то должен переписать всю библиотеку на PHP 5 ...

10
ответ дан 3 December 2019 в 17:21
поделиться

Эта библиотека должна работать с Yahoo и Google в порядке. Вы можете увидеть онлайн-демонстрацию для этой библиотеки и попробовать ее сами, используя "yahoo.com" или " https://www.google.com/accounts/o8/id " чтобы проверить это на этих двух OP.

У Google есть идентификатор, который нужно ввести, потому что они все еще находятся в стадии бета-тестирования и еще не подтолкнули свой OP Identifier к просто "google.com".

1
ответ дан 3 December 2019 в 17:21
поделиться

Вы используете пример RP? Могу ли я предложить вам отправить подробный отчет об ошибке на http://trac.openidenabled.com/trac/newticket?project=php-openid или подробный запрос через список рассылки.

Действительно, поддержка немедленного_моде действительно работает с библиотеками, если они реализованы правильно. Я (и другие) также были бы счастливы помочь вам на IRC-канале OpenID irc.reenode.net в #openid. Мой ник вялый.

1
ответ дан 3 December 2019 в 17:21
поделиться

Я загрузил последние библиотеки и получаю такие же неудачные результаты при использовании Yahoo !. Я не пробовал Google.

Если я попытаюсь использовать http://www.yahoo.com , я получаю сообщение об ошибке авторизации, но он возвращает мой правильный URL me.yahoo.com. Если я попытаюсь войти в систему, используя свой URL-адрес me.yahoo.com, я получаю сообщение об ошибке с указанием ввести действительный URL-адрес OpenID.

0
ответ дан 3 December 2019 в 17:21
поделиться

Еще одно потенциальное отличие состоит в том, что Google и Yahoo используют HTTPS, и если ваша установка PHP или SSL настроена неправильно (возможно, отсутствуют сертификаты CA), ваш код OpenID не сможет установить ассоциацию или завершите вызов check_authentication.

0
ответ дан 3 December 2019 в 17:21
поделиться

I согласен с частью сертификата - для меня установка пакета ca-сертификатов (в системах типа debian: apt-get install ca-Certificates) и перезапуск веб-сервера решили проблему google / yahoo. Не моя идея, но вместо этого предложил в stackoverflow : -)

1
ответ дан 3 December 2019 в 17:21
поделиться

Это потому, что в php не включена поддержка curl. Без этого он не может получить контент https. По крайней мере, это то, что я обнаружил. Когда я пытался получить Yahoo или Google, он не удался с сообщением об ошибке «Ошибка аутентификации; недействительный OpenID», но когда я включаю php_curl, он работает правильно.

1
ответ дан 3 December 2019 в 17:21
поделиться

Убедитесь, что на вашем сервере включен curl с включенным протоколом https. Это решило эту проблему для меня.

см. Эту ветку .

Вот быстрый сценарий для проверки. Загрузите на свой сервер, а затем подключитесь к нему через браузер.

<?php
error_reporting(E_ALL);
// create curl resource
$myurl = 'https://<YOURACCOUNT>.myopenid.com';
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL, $myurl);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);


if (empty($buffer))
{
    print "Sorry, cannot access $myurl .<p>". curl_error($curl_handle);
}
else
{
    print $buffer;
}

curl_close($curl_handle);


?>

Если он возвращает «Протокол https не поддерживается или отключен в libcurl», то вы знаете, что делать.

Я попробовал его, используя свою учетную запись gmail, и он работает, но приводит на постоянную переадресацию 301, что имеет смысл.

1
ответ дан 3 December 2019 в 17:21
поделиться

У меня была такая же проблема в Windows XP. Исправлено при активации расширения curl. Для этого раскомментируйте в php.ini строку

extension=php_curl.dll

, удалив перед ней ; , если они есть. Перезагрузите apache.

Также для правильной работы Windows вам необходимо определить Auth_OpenID_RAND_SOURCE как null, поскольку в Windows у вас нет случайного источника. Вы можете сделать это, добавив строку

define('Auth_OpenID_RAND_SOURCE', null);

в CryptUtil.php перед первой строкой кода

if(!defined('Auth_OpenID_RAND_SOURCE')){

. Даже если curl не включен, API должен работать, используя вместо этого Auth_Yadis_PlainHTTPFetcher для связи через HTTP. В случае с Google и Yahoo вам нужен https, поэтому он работает, только если включен open_ssl (Auth_Yadis_PlainHTTPFetcher :: supportsSSL должен возвращать true).

6
ответ дан 3 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: