[PHP] 整合 Google OpenID 時的兩個 Know-How
以下兩個 Know-How 主要是配合 [url=http://openidenabled.com/php-openid/]PHP OpenID Library[/url] 整合時遇到的,如果您詳讀相關 Spec 後自行實做或許不會遇到相似的問題。如果不幸遇到了,也可以參考看看。1. Google 提供的 OpenID 解決方案是不需要先輸入 User 的 OpenID URL 的,因此要帶入的 URL 請固定使用這組:
[code txt:nocontrols]https://www.google.com/accounts/o8/id[/code]
PS. 這樣的做法相當讚,整合的頁面上只需要提供一個按鈕,不需要先讓 User 輸入那個 OpenID 的 URL,非常友善。
2. 當 Google 回應「伺服器無法處理您的要求」的錯誤訊息,很可能是因為你帶過去的 TrustRoot URL 是帶有小數點的,就會遇到這樣的錯誤,例如這樣的 URL:
[code txt:nocontrols]http://jsgears.com/php-openid-2.1.2/[/code]
透過 PHP OpenID Library 範例中的 getTrustRoot() 帶過去後,就會發現錯誤訊息。解法當然是盡量避免這樣的 URL,或者你可以直接帶 domain name 的部份即可。 原來 Google 這種不用帶 user 帳號的做法是 OpenID 2.0 的 Directed Identity。
Yahoo! 也支援這種登入方式,只需要以 [url]http://yahoo.com/[/url] 為 identity 即可自動轉到 Yahoo! 進行登入。
目前還沒找到其他支援 Directed Identity 的 Provider URL,如果有人知道的話,請不吝告知。
頁:
[1]