2014-02-12 59 views
0

我正在用Rails編寫一個後端/隨播網站的iOS應用程序。使用Twitter反向驗證在rails後端創建用戶

我已經設置了裝置和後omniauth,嘰嘰喳喳所概述的軌道投
http://railscasts.com/episodes/235-devise-and-omniauth-revised

我也進行嘰嘰喳喳反向身份驗證來獲得關於制定一個使用OAuth憑證這裏列出
https://dev.twitter.com/docs/ios/using-reverse-auth

現在我想要做的就是將令牌發送到服務器,並在我的數據庫中創建一個設計用戶。
什麼是創建用戶的理想方式?這種情況是否支持開箱即用的當前設置,還是必須編寫一些自定義代碼?

回答

1

我一直在研究同樣的事情幾天。

我相信omniauth-twitter不適用於Twitter反向身份驗證。

我認爲解決的辦法是發送oauth_tokenoauth_token_secret你從反向認證過程在iOS中的應用程序接收 ,到自定義端點。 請注意,我正在自己實施這個過程;它應該可以工作,但還沒有測試過。

在那裏您將使用twitter API來驗證憑據。這是從Rails應用程序的角度來看的實際身份驗證步驟。事情是這樣的(未測試的代碼):

consumer = OAuth::Consumer.new(TWITTER_APP_ID, 
           TWITTER_APP_SECRET, 
           { site: 'https://api.twitter.com' }) 
    access_token_token = ::OAuth::AccessToken.new(consumer, 
               params[:oauth_token], 
               params[:oauth_token_secret]) 
    MultiJson.load(access_token.get('/1.1/account/verify_credentials.json?include_entities=false&skip_status=true')).body 

(這是同樣的事情,該omniauth-twitter寶石做它獲得訪問令牌後) 所以從現在開始,你將需要:

  • 手柄來自上述請求的非200響應
  • 從返回的散列中讀取用戶標識,使用現有的twitter用戶標識在數據庫中搜索現有用戶。如果存在,簽下他。如果沒有,創建一個新用戶,並簽署他在

這裏有更多的一些信息:。

  • 我的第一個想法是擊中omniauth-twitter Twitter的回調提供商直。但在這種情況下,您需要傳遞兩個參數:oauth_token,這是您從iOS上的反向驗證獲取的請求令牌,以及oauth_verifier參數,我不知道如何獲取iOS(使用標準Web流程用戶被重定向回到你的回調,這個參數從twitter傳遞)。

  • 反向驗證的缺點似乎是您需要將應用程序密碼嵌入到您的應用程序二進制文件中。它看起來像一個好主意,執行該步驟的服務器端(我看到的想法在這裏:https://github.com/drudge/passport-twitter-token/#performing-twitter-reverse-auth-step-1-server-side

+0

是的後玩弄它,想着我還挺來到以避免嵌入二進制應用祕密在服務器上進行反向身份驗證的相同的結論的情況。 我也想直接調用omnitauth,Twitter的回調,但酵母是行不通的。我發現了一個omniauth提供商[omniauth,Twitter的訪問令牌(https://github.com/tdegrunt/omniauth-twitter-access-token)就是我們想要什麼,但它似乎並不符合公衆的寶石回購。我不確定它的支持狀態是什麼。 – Canuck41

0

我剛剛創建一個UIWebView當用戶點擊「註冊通過Twitter」按鈕,在你的ios然後遵循與我的rails應用程序相同的過程。

一旦用戶通過twitter註冊,全部由服務器處理,您可以重定向回您的ios應用程序並註冊並登錄,因此無需處理應用程序中的所有令牌和請求。

相關問題