我已經爲Devise和Omniauth的Rails應用程序設置了用戶身份驗證。 現在我想知道我應該從哪裏開始爲我想創建的Android和iPhone應用使用相同的身份驗證。設計Omniauth和Iphone/Android應用程序
我應該使用my/auth/facebook的移動版本還是應該直接從應用程序發送請求?
這是一個相當普遍的問題,但我找不到。
編輯:我剛剛添加令牌身份驗證到應用程序使用RESTful api,我只是錯過了Omniauth/Facebook令牌部分。
我已經爲Devise和Omniauth的Rails應用程序設置了用戶身份驗證。 現在我想知道我應該從哪裏開始爲我想創建的Android和iPhone應用使用相同的身份驗證。設計Omniauth和Iphone/Android應用程序
我應該使用my/auth/facebook的移動版本還是應該直接從應用程序發送請求?
這是一個相當普遍的問題,但我找不到。
編輯:我剛剛添加令牌身份驗證到應用程序使用RESTful api,我只是錯過了Omniauth/Facebook令牌部分。
好吧,我正在回答我自己的問題。
如果您使用Facebook SDK,SSO在設備上運行得非常好,但是,您收到的令牌與您在Rails應用中收到的令牌不一樣。顯然,Facebook根據支持創建了不同的令牌。
所以我所做的就是:有一次,我收到了Android設備上的令牌,我把它發送給我的軌道通過網址應用:
http://myapp/check_mobile_login?token=FB_MOBILE_TOKEN
然後,這是我的應用程序控制器,它使用的抓使用fb_graph gem的令牌獲取用戶數據。如果令牌有效,我將收到一些信息。然後我檢查我的數據庫,並且如果我找到相同的UID,那麼我的用戶通過驗證,並且我將他從Devise發回給Authentificable_token。
和代碼草案:
def check_mobile_login
token = params[:token]
user = FbGraph::User.me(token)
user = user.fetch
logged = User.find_by_uid(user.identifier)
respond_to do |format|
format.html # index.html.erb
format.json { render :json => logged.authentication_token }
end
end
如果任何人有一個更好的解決方案,我會很高興地聽到,:)
嗨,我試圖做同樣的事情,我想知道你到底在哪裏「sign_in」來設計,以便在你的Rails應用裏面生成authentication_token? – refaelos 2012-04-28 21:29:39
我有Facebook的SDK建立在我的Android應用程序,但它似乎我回來的令牌與我在rails應用數據庫中的令牌不一樣,所以我無法將它們與auth用戶進行比較?! – rnaud 2011-01-31 21:32:16