rna*_*aud 25 iphone android ruby-on-rails devise omniauth
我已经使用Devise和Omniauth为我的rails应用程序设置了用户身份验证.现在我想知道我应该在哪里开始为我想要创建的Android和iPhone应用程序使用相同的auth.
我应该使用我的/ auth/facebook的移动版本,还是应该直接从应用程序发送请求?
这是一个相当普遍的问题,但我发现无处可寻.
编辑:我刚刚向应用程序添加了Token Auth以与RESTful api一起使用,我只是错过了Omniauth/Facebook-token部分.
rna*_*aud 36
好吧,所以我回答了我自己的问题.
如果您使用Facebook SDK,SSO在设备上运行良好,但是,您收到的令牌与您在Rails应用程序上收到的令牌不同.显然Facebook根据支持创建不同的令牌.
所以我做的是:一旦我在Android设备上收到令牌,我就会通过网址将它发送到我的rails应用:
http://myapp/check_mobile_login?token=FB_MOBILE_TOKEN
Run Code Online (Sandbox Code Playgroud)
然后由我的Application控制器捕获它,它使用带有fb_graph gem的Token来获取用户数据.如果令牌有效,我将收到一些信息.然后我检查我的数据库,如果我找到相同的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
Run Code Online (Sandbox Code Playgroud)
如果有人有更好的解决方案,我会很高兴听到:)
| 归档时间: |
|
| 查看次数: |
8703 次 |
| 最近记录: |