设计Omniauth和Iphone/Android应用程序
我已经为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