我一直在为移动开发人员构建一个用于 iphone 应用程序的服务器 api。我没有移动开发经验,他们也没有使用 ruby on rails 的经验。我试图为应用程序构建一个移动身份验证路由,允许用户通过 facebook 登录。到目前为止,它看起来像这样:
GET '/auth/mobile/fbtoken=:facebook_token&device_id=:device_id&time_zone=:time_zone&os_type=:os_type',到:'sessions#fb_sso'
client = OAuth2::Client.new(
ENV['FACEBOOK_APP_ID'],
ENV['FACEBOOK_APP_SECRET'],
site: 'https://graph.facebook.com')
token = OAuth2::AccessToken.new(client, params[:access_token])
user_info = ActiveSupport::JSON.decode(token.get('/me').body)
用于学习如何正确执行此操作的在线资源非常有限或不存在。我找到的有关如何执行此操作的唯一信息涉及使用 Devise 进行身份验证。我们的应用目前配备了 Devise(已添加并已迁移到 User 模型),但当前未通过 Devise 进行身份验证。我能够找到的唯一具体示例之一可以在这篇文章的页面底部找到:
https://www.ruby-forum.com/topic/4409930
这让我相信我在设置路线的方式上走在正确的轨道上,因为除了最后一步“使用 Devise 方法登录:sign_in @user, :event => :authentication”之外,一切都是一样的。这就是促使我尝试将 Devise 集成到我们的应用程序中的原因。
读完之后,我的意思是在某种受限状态下实现 Devise,并且只使用 sign_in 方法。不幸的是,Devise 似乎非常固执己见,更像是一种“全有或全无”的解决方案。我非常不确定如何继续以及如何决定是完全重建我们的应用程序的重要部分以支持 Devise,还是完全放弃它并尝试实施我自己的解决方案。
tl;dr 1) 是否值得重做 Rails 应用程序的很大一部分以使用 Devise?2)没有设计是否可以使这条路线工作?如何?