我正在使用omniauth與LinkedIn作爲提供商。 LinkedIn不提供 電子郵件信息哈希,所以我不能提供電子郵件時創建基於我回來的信息 用戶。使用Linkedin的Omnoauth登錄不提供電子郵件信息哈希
兩個相關的問題:
1)我怎樣才能調整設計,使得沒有一個要求 :電子郵件作爲驗證?它似乎不在 用戶模型下設置。
2)我確實想獲取電子郵件信息,但是,想要在創建用戶之前請求 電子郵件信息。我如何 重定向到一個頁面/嚮導詢問電子郵件信息,然後 回來完成用戶註冊?
我正在使用omniauth與LinkedIn作爲提供商。 LinkedIn不提供 電子郵件信息哈希,所以我不能提供電子郵件時創建基於我回來的信息 用戶。使用Linkedin的Omnoauth登錄不提供電子郵件信息哈希
兩個相關的問題:
1)我怎樣才能調整設計,使得沒有一個要求 :電子郵件作爲驗證?它似乎不在 用戶模型下設置。
2)我確實想獲取電子郵件信息,但是,想要在創建用戶之前請求 電子郵件信息。我如何 重定向到一個頁面/嚮導詢問電子郵件信息,然後 回來完成用戶註冊?
看看關於omniauth的railscasts:http://railscasts.com/episodes?utf8=%E2%9C%93&search=omniauth
的想法是這樣的:
redirect_to new_user_registration_url
build_resource(*args)
方法,並且如果omniauth數據存在時,用它(在你的情況下的用戶)創建的資源這樣,在嘗試使用linkedin登錄後,用戶將被重定向到可以輸入他的電子郵件的表單。
這一切都在railscast解釋;)
我只是解決了這個無需使用單獨的「LinkedIn」的寶石,這是非常困難的,因爲有一個明顯缺乏關於這個問題的文件!
首先,您需要通過將字段選項添加到LinkedIn Omniauth配置來使電子郵件地址可用,您還需要覆蓋request_token_path以添加檢索用戶電子郵件地址所需的r_emailaddress範圍。
礦山結束了看起來像這樣(NB紅寶石1.9.3。):
provider :linkedin, external_services['linkedin']['api_key'], external_services['linkedin']['api_secret'], client_options: {request_token_path: '/uas/oauth/requestToken?scope=r_emailaddress'}, fields: ['id', 'first-name', 'last-name', 'headline', 'industry', 'picture-url', 'public-profile-url', 'email-address']
注意:不要忘記更改external_services [ 'LinkedIn'] [ 'API_KEY']和external_services ['LinkedIn '] ['api_secret']給你自己。
您的用戶將被要求授權使用他們的電子郵件地址,以及他們的基本提供,你將有機會獲得它一旦被通過返回:
auth['extra']['raw_info']['emailAddress']
我也許應該犯這種變化回到omniauth-linkedin,這樣你就可以簡單地在提供者選項中設置scope:r_emailaddress,避免重複字段名稱並將電子郵件返回到auth對象的info部分。
如果我在我的項目的這一部分完成後得到時間,我會的。
謝謝你的回答,但你有什麼我可以參考的例子。我無法在rails上找到投射視頻,你可以建議這個網址嗎? – 2012-03-29 07:50:42
我認爲這是在這個:http://railscasts.com/episodes/236-omniauth-part-2。您的問題並非直接存在於我的想法中,但它處理登錄或電子郵件已被佔用的情況。這與電子郵件丟失的原理完全相同。 – Robin 2012-03-29 14:52:11
是的,謝謝它會有所幫助。 – 2012-03-29 15:22:32