Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails OAuth流量,iPhone->;钢轨->;脸谱网_Ruby On Rails_Facebook_Oauth 2.0_Omniauth - Fatal编程技术网

Ruby on rails OAuth流量,iPhone->;钢轨->;脸谱网

Ruby on rails OAuth流量,iPhone->;钢轨->;脸谱网,ruby-on-rails,facebook,oauth-2.0,omniauth,Ruby On Rails,Facebook,Oauth 2.0,Omniauth,我正在用一个web客户端和一个iPhone客户端构建一个应用程序 在web客户端上,我使用Omniauth通过Facebook对用户进行身份验证,然后用户可以将应用程序上的操作发布到Facebook。这很有效 我在从iPhone应用程序实现身份验证流时遇到一些问题 我已经在rails应用程序中将Doorkeeper设置为OAuth提供商。虽然我不确定应该如何实现身份验证流 我想到了这个: 用户可以通过iPhone登录Facebook并获得令牌。然后将令牌和Facebook uid一起发送到rai

我正在用一个web客户端和一个iPhone客户端构建一个应用程序

在web客户端上,我使用Omniauth通过Facebook对用户进行身份验证,然后用户可以将应用程序上的操作发布到Facebook。这很有效

我在从iPhone应用程序实现身份验证流时遇到一些问题

我已经在rails应用程序中将Doorkeeper设置为OAuth提供商。虽然我不确定应该如何实现身份验证流

我想到了这个: 用户可以通过iPhone登录Facebook并获得令牌。然后将令牌和Facebook uid一起发送到rails应用程序,存储它,并使用Omniauth对用户进行身份验证。一旦用户通过身份验证,使用Doorkeeper生成一个令牌,并将其发送回iPhone应用程序

如果这是用户首次针对rails应用程序进行身份验证,则将创建一个新用户

然后用户可以对JSON api执行操作,rails应用程序将负责Facebook集成,因为Facebook令牌存储在用户记录中

该应用程序还将跨越多个域,因此我需要注册多个门卫应用程序以提供不同的回调uri

这似乎是一个可行的解决方案吗? 安全吗? 是否有其他流程/方法


谢谢。

我使用的解决方案总结如下:

  • 客户端通过Facebook启动宣誓流程(使用登录按钮等)
  • 客户端获取身份验证令牌并发回服务器
  • 服务器通过带有令牌的FB API调用查找用户
  • 服务器根据FB id查找/创建用户
  • 如果具有FB id关联查找的用户成功,则用户将登录

  • 我这里有一个图表和更多细节:

    我正在考虑相同的架构,我认为这是合法的。在您的描述中,您缺少“rails针对Facebook验证FB UID+访问令牌”以确保您没有被欺骗。这被称为“断言”,似乎正是您所描述的。From:`OAuth客户端将使用其他框架对用户进行身份验证并获取令牌,然后将此令牌交换为您域上的访问令牌。''oauth2 provider最终使用了吗?