用于移动应用程序与OAuth保护的Rest API通信的OAuth流

用于移动应用程序与OAuth保护的Rest API通信的OAuth流,rest,oauth,Rest,Oauth,我在使用OAuth和移动应用程序时遇到了一个有趣的问题。我已经发现了一些类似的问题,但恐怕还没有找到任何相关的答案 该应用程序包括以下内容: 由OAuth保护的RESTAPI 使用API的Android移动应用程序(又名可信客户端/官方应用程序) 用户创建帐户有三种方式: 电子邮件/密码组合 谷歌账户 Facebook帐户 有两个主要问题/我想这两个问题是相互关联的/: 应该使用什么OAuth授权类型 如何处理第三方用户注册 关于问题1 我正在考虑使用资源所有者密码grant/尽管我发现

我在使用OAuth和移动应用程序时遇到了一个有趣的问题。我已经发现了一些类似的问题,但恐怕还没有找到任何相关的答案

该应用程序包括以下内容:

  • 由OAuth保护的RESTAPI
  • 使用API的Android移动应用程序(又名可信客户端/官方应用程序)
用户创建帐户有三种方式:

  • 电子邮件/密码组合
  • 谷歌账户
  • Facebook帐户
有两个主要问题/我想这两个问题是相互关联的/:

  • 应该使用什么OAuth授权类型
  • 如何处理第三方用户注册
  • 关于问题1
    我正在考虑使用资源所有者密码grant/尽管我发现在本机应用程序/或客户端凭据grant类型中使用它有一些不同的意见。在处理资源所有者密码授予类型时,我可以看到通过Facebook或Google创建的帐户存在问题,因为它们没有密码

    关于问题#2
    哪一方应负责处理Facebook/Google注册?后端还是移动应用程序?在目前的情况下,没有网站,我认为移动应用程序应该是负责方

    关于外部帐户的第二个问题:如何处理OAuth保护的API


    谢谢你的建议

    一般来说,如果您使用自己的用户,那么将授权功能集中于第三方是一个好主意。您的后端代码应该能够通过Facebook和Google完成授权。无论授权从何处启动

    例如

  • 用户第一次打开应用程序ExampleApp,看到“使用谷歌注册/登录”按钮并单击它
  • 应用程序启动oauth流并指定驻留在您自己的授权层中的重定向uri(即回调),例如
  • 然后,您的服务器可以将授权码交换为访问令牌->从google获取用户标识并创建新用户
  • 现在,应用程序需要exampleapp.com/api的凭据,因此服务器生成一个访问令牌,并通过应用程序回调将其返回给应用程序。i、 例如,应用程序。基本上,服务器可以将
    302永久重定向到自定义URL架构,例如
    ExampleApp://?access\u token=access\u token&refresh\u token=refresh\u token&expires\u in=TIMESTAMP
  • 现在,该应用程序可以与您的后端通信,并刷新令牌等

  • 注意:我假设Oauth2适用于您的服务提供商,但Oauth1也可以使用大致相同的过程。

    一般来说,如果您使用自己的用户,将授权功能集中于第三方是一个好主意。您的后端代码应该能够通过Facebook和Google完成授权。无论授权从何处启动

    例如

  • 用户第一次打开应用程序ExampleApp,看到“使用谷歌注册/登录”按钮并单击它
  • 应用程序启动oauth流并指定驻留在您自己的授权层中的重定向uri(即回调),例如
  • 然后,您的服务器可以将授权码交换为访问令牌->从google获取用户标识并创建新用户
  • 现在,应用程序需要exampleapp.com/api的凭据,因此服务器生成一个访问令牌,并通过应用程序回调将其返回给应用程序。i、 例如,应用程序。基本上,服务器可以将
    302永久重定向到自定义URL架构,例如
    ExampleApp://?access\u token=access\u token&refresh\u token=refresh\u token&expires\u in=TIMESTAMP
  • 现在,该应用程序可以与您的后端通信,并刷新令牌等
  • 注意:我假设Oauth2适用于您的服务提供商,但是Oauth1可以使用大致相同的过程