返回列表 發帖

[PHP] 整合 Google OpenID 時的兩個 Know-How

以下兩個 Know-How 主要是配合 PHP OpenID Library 整合時遇到的,如果您詳讀相關 Spec 後自行實做或許不會遇到相似的問題。如果不幸遇到了,也可以參考看看。

1. Google 提供的 OpenID 解決方案是不需要先輸入 User 的 OpenID URL 的,因此要帶入的 URL 請固定使用這組:
https://www.google.com/accounts/o8/id
PS. 這樣的做法相當讚,整合的頁面上只需要提供一個按鈕,不需要先讓 User 輸入那個 OpenID 的 URL,非常友善。

2. 當 Google 回應「伺服器無法處理您的要求」的錯誤訊息,很可能是因為你帶過去的 TrustRoot URL 是帶有小數點的,就會遇到這樣的錯誤,例如這樣的 URL:
http://jsgears.com/php-openid-2.1.2/
透過 PHP OpenID Library 範例中的 getTrustRoot() 帶過去後,就會發現錯誤訊息。解法當然是盡量避免這樣的 URL,或者你可以直接帶 domain name 的部份即可。
To infinity and beyond!

原來 Google 這種不用帶 user 帳號的做法是 OpenID 2.0 的 Directed Identity。

Yahoo! 也支援這種登入方式,只需要以 http://yahoo.com/ 為 identity 即可自動轉到 Yahoo! 進行登入。

目前還沒找到其他支援 Directed Identity 的 Provider URL,如果有人知道的話,請不吝告知。
To infinity and beyond!

TOP

返回列表 回復 發帖