5

我現在/config/initializers/omniauth.rb文件包含:我怎麼就沒有用Rails Omniauth寶石和谷歌的OpenID的時候需要用戶的電子郵件

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :open_id, nil, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id' 
end 

當我通過谷歌登錄轉至/ auth /中谷歌,谷歌報道:

DOMAIN是要求從您的谷歌帳戶EMAIL 一些信息 - 電子郵件地址:NAME(EMAIL)

我的應用程序不需要用戶的電子郵件,所以我想消除此入口障礙。無論如何刪除這個要求。對於Facebook來說,我發現我可以添加的選項的「範圍」屬性,例如:

provider :facebook, 'APP_ID', 'APP_SECRET', {:scope => ''} 
+1

我想訣竅是定製OpenId請求的屬性交換屬性,但我不知道該怎麼做。它看起來像openid.ax.required和openid.ax.type.email可能是相關的... – weotch 2011-02-13 20:39:09

+1

是否有一個Omniauth IRC頻道這可以問?我也需要答案。 – SZH 2011-02-15 23:16:53

回答

3

基於源的OpenID的戰略(其中谷歌APS AUTH從繼承)的快速審查,你可以傳遞選項,指定哪些屬性是可選的,而不是屬性交換(AX)身份驗證所需的屬性。

在這裏看到源代碼的選項:在此基礎上https://github.com/intridea/omniauth/blob/master/oa-openid/lib/omniauth/strategies/open_id.rb

,我想你可以改變像這樣的選項刪除電子郵件作爲必需屬性:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :open_id, nil, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id', :required => [], :optional => [] 
end 

好運。我沒有測試這個,只是閱讀源代碼。

相關問題