我想實現一個最新的LightOpenID版本的OpenID登錄系統。我正在逐行測試源代碼提供的示例(我剛剛在構造函數中將localhost
替換爲$_SERVER['HTTP_HOST']
)。OpenID登錄代碼在現場服務器中失敗
問題是,我的開發箱內的專用網絡(Windows Vista上的PHP/5.3.6)的一切工作正常,但在我的生活服務器在HSP公共網絡驗證總是失敗(CentOS上的PHP/5.3.3 )。
我已經添加了var_dump()
的全部內容,我可以告訴你,這兩個代碼副本產生完全相同的請求參數,並接收完全相同的響應參數(通過GET)。只有openid.assoc_handle
,openid.sig
,openid.response_nonce
和openid.return_to
有不同的值,我猜是預期的行爲。
然而,我的dev的盒子從OpenID提供商接收到這個(不管我用哪一個):
is_valid:true
ns:http://specs.openid.net/auth/2.0
...和我的活狐狸收到這樣的:
is_valid:false
ns:http://specs.openid.net/auth/2.0
有AREN不涉及任何非ASCII字符,因此它不能成爲編碼問題。我的託管服務一定有問題,但我無法弄清楚。
我需要關於可能的原因和故障排除提示的建議。
感謝您的修復。雖然重複,但我想知道爲什麼第二次調用file_get_contents($ url,false,$ context)等於$ data不起作用? – neobie
我想你只能出於安全原因才能成功地驗證一個呼叫。 –
由於某種原因,它被稱爲「隨機數」。這是一次性的令牌。 – Maerlyn