JanRain en PHP-OpenID ve Google / Yahoo

11 Cevap php

I Janrain's PHP-OpenID 2.1.3 kullanıyorum, ve bunu ben Google ve Yahoo dışında denedim tüm sağlayıcıları ile çalışma almak başardınız. Burada önemli fark Google ve Yahoo, çoğu diğer sağlayıcıların aksine, bir kullanıcı özel bir URL kullanmak yerine onların ucunda kullanıcı keşif çerçeveyi tüm yok gibi görünüyor - bir döngü için varsayılan JanRain çerçeveyi atar sonra auth isteği başlatmak için çalışır.

Ben muhtemelen keşif Google'ın veya Yahoo'nun ucunda olduğu baypas edilmesi gerekir hata atıyor YADIS keşif, öyle görünüyor, ama emin değilim ne gördüm. Bu benim için hepsi büyük bir informal öğrenme deneyimi olduğunu, ve ben bu konuda bana yardımcı olabilecek herhangi bir şans bulgu belge olmadı. Herhangi bir ipucu büyük mutluluk duyacağız.

Edit: yaşıyorum özel problem başlar () işlevi, Google ya da Yahoo URL için çağrıldığında, ben boş bir dönüş olsun olmasıdır. Bu işlev başvuru için Auth / OpenID / Consumer.php bulunur.

11 Cevap

Tamam, sonunda ben herşeyi here (siz de benim değişikliklerden sonra php-OpenID kütüphanesi indirebilirsiniz) açıkladı ... kütüphanesini düzeltmek lazım.

Ben Auth_OpenID_detectMathLibrary değiştirmek ve fonksiyonları bir sürü static anahtar kelime eklemek için gerekli, aynı zamanda, Paul Tarjan önerilen ne yapmak gerekiyordu ama. Bu ideal bir çözüm olmamakla beraber mükemmel çalışıyor görünüyor sonra ... Birisi PHP 5 bütün kütüphane yeniden gerektiğini düşünüyorum ...

Windows XP aynı problem vardı. Kıvırmak uzantısını etkinleştirerek düzeltildi. Php.ini bu Uncomment yapmak için çizgi

extension=php_curl.dll

bunun varsa önündeki ; kaldırarak. Apache yeniden başlatın.

Windows düzgün çalışması için de size pencerelerde rastgele bir kaynak yok çünkü boş olarak Auth_OpenID_RAND_SOURCE tanımlamanız gerekir. Sen satırı ekleyerek yapabilirsiniz

define('Auth_OpenID_RAND_SOURCE', null);

CryptUtil.php yılında ilk kod satırından önce

if(!defined('Auth_OpenID_RAND_SOURCE')){

Kıvırmak etkin olmasa bile API HTTP üzerinden HABERLE yerine Auth_Yadis_PlainHTTPFetcher ile çalışması gerekir. Google ve Yahoo durumda https gerekir, bu yüzden open_ssl (Auth_Yadis_PlainHTTPFetcher :: supportsSSL doğru dönmelidir) etkinse sadece çalışır.

Ben tam olarak aynı sorunu vardı ve bu sorunu çözmem yaklaşık 2 saat sürdü. Jan Rain'in OpenID lib 'DOM veya domxml PHP XML' (https://github.com/openid/php-openid) gerektirir ama hiçbiri mevcut olduğunda sessizce başarısız!

Benim CentOS kurulumu basit On:

yum install php-xml

sorun sabit (Ben bu repo kullanıyorum: http://blog.famillecollet.com/pages/Config-en).

Bu kütüphane sadece iyi Yahoo ve Google ile çalışması gerekir. Bu kütüphane için online demo görmek ve bu iki karşı test etmek için "yahoo.com" veya "https://www.google.com/accounts/o8/id" kullanarak kendiniz deneyebilirsiniz OP.

Google, hala beta olduğunu ve henüz OP tanıtıcı sadece "google.com" olmaya itti değil çünkü yazmanız tanımlayıcı boyunca vardır.

Eğer örnek RP kullanıyor musunuz? Sana http://trac.openidenabled.com/trac/newticket?project=php-openid veya posta listesi üzerinden ayrıntılı bir soruşturma ayrıntılı bir hata gönderin önerebilirsiniz.

Doğru bir şekilde uygulandığında eğer immediate_mode destek gerçekten kütüphaneleri çalışır. Ben (ve diğerleri) da # OpenID de OpenID IRC kanalı irc.reenode.net size yardımcı olmaktan mutluluk olacaktır. Benim takma sarkık değildir.

Ben sertifika kısmında katılıyorum - Beni (sistemler gibi debian: apt-get install ca-sertifikalar) ca-sertifikaları paketini yüklemek için bir web sunucusu yeniden başlatma google / yahoo sorunu çözüldü. Benim fikrim değil, ancak bunun yerine önerilen on stackoverflow :-)

Eğer kıvırmak destek php kılınmış yok çünkü bulunuyor. Bu olmadan, https içeriği alınamıyor. En azından, ben keşfettim buydu. ";, Geçerli bir OpenID Kimlik Doğrulama hatası" ama ben php_curl etkinleştirdiğinizde, düzgün çalıştığını ben yahoo almak veya google çalıştım, bu bir hata mesajı ile başarısız oldu.

Sunucu https protokolü etkin olan kıvırmak olduğundan emin olun. Bu benim için bunu çözdü.

Bunu görmek thread.

İşte bunu test etmek için hızlı bir betik. Sunucu üzerinde yükleyin sonra tarayıcınız yoluyla erişecek.

<?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);


?>

O "Protokol desteklenen veya libcurl engelli değil https" dönerse o zaman ne yapacağımı biliyorum.

Ben gmail hesabınızı kullanarak denedim ve çalışıyor ama mantıklı bir 301 kalıcı rediret yol açar.

Ben son kütüphaneleri indirilen ve Yahoo! kullanırken ben aynı başarısız sonuçlar olsun. Google'ı deneyin vermedi.

Ben kullanmaya çalışırsanız http://www.yahoo.com Ben yetkilendirme başarısız söyleyerek bir hata alıyorum, ama bu benim doğru me.yahoo.com url verir. Ben me.yahoo.com url kullanarak giriş çalışırsanız o zaman geçerli bir OpenID url girmek için söyleyerek bir hata alıyorum.

Bir diğer potansiyel farkı Google ve Yahoo HTTPS kullanmak ve PHP veya SSL kurulum (belki CA certs eksik) yanlış ise o zaman OpenID kod bir dernek kurmak veya check_authentication aramayı tamamlamak için başarısız olur.

Ama hata iletileri veya günlükleri olmadan, ben gerçekten bakıyoruz başarısızlık ne tür söyleyemem.

Birkaç yıl çok geç, ama bu bir Windows platformu üzerinde Janrains PHP OpenID 2.2.2 kütüphaneyi kullanan kullanıcılar için uygun olabilir. PHP 5.2.17 hala yaşıyorum.

Sadece kütüphane Google'a temas edildi emin olmak için benim basit bir test, örnekler / discover.php programı kullanın ve Google'ın OpenID URL (https://www.google.com/accounts/o8/id) geçmek oldu.

Talimatlara uygun olarak, standart adımlar GMP (dosyamıza extension = php_gmp.dll) ve CURL (dosyamıza extension = php_curl.dll) etkinleştirmek için vardır. XML zaten etkinleştirilmiş olmalıdır.

Ayrıca contrib / google paketi ayıklamak ve emin google_discovery.php ve ca-bundle.crt Auth / OpenID vardır yapmak gerekebilir.

Ekstra paranoyak bunlar doğru şeyler kurmak olduğundan emin olmak için, örnekler / detect.php ile başlayabilirsiniz. Bu Şifreleme Rastlantısallık testi hariç tüm testleri geçmek istiyorum bekleniyor. Bunun için, eklemek gerekir

define('Auth_OpenID_RAND_SOURCE', null);

örnekler / detect.php üstüne. Oradayken (örnek / discover.php kullanır beri) ve örnekler / tüketici / common.php bu ekleyin.

Now, even after all this, discovery for the Google OpenID URL was failing. I was getting CURL error (60): SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in the php error log.

Windows ortamında, CURLOPT_CAPATH için bir tanım gerekir. Benim çabuk test için, curl_setopt($c, CURLOPT_CAINFO, dirname(__FILE__)."/../OpenID/ca-bundle.crt"); Auth / Yadis / ParanoidHTTPFetcher.php in () deyimleri curl_exec önce eklenir.

Bu örnekler / discover.php Google URL tarafından sunulan hizmetleri keşfetmek için izin verdi.

Windows CURLOPT_CAPATH ayarı için uzun vadeli bir çözüm olarak, this StackOverflow answer başvurmak isteyebilirsiniz böylece php.ini için bir ayar ekleyebilirsiniz.