我有一个网络服务,作为智能手机应用程序的后端。
我希望能够尽可能轻松地对用户进行身份验证,但即使我认为我理解了OAuth,我也必须承认这里和那里都有一些缺失的部分。
认证
假设用户拥有Android手机。他可能已经通过Google认证,如果我可以将此身份验证扩展到我的网络服务,那将是非常好的。 Android拥有OAuth支持,因此用户可以打开他的应用,授予使用其Google帐户的权限,并且该应用会对他进行网络服务身份验证。
网络服务
由于该服务应该接受来自各种设备的用户,因此它不应该是Google特定的。应该可以注册帐户并从任何设备登录。我不确定是否可以单独使用OAuth注册新帐户,或者首先需要其他类型的身份验证 - 例如OpenID。
流程如何用于通用Web服务?用于注册用户并授予他访问API的通用API?
此外 - 我不想控制连接到此服务的设备。我可以看到OAuth需要consumer_key和consumer_secret。如果我通过SSL运行一切 - 消费者的秘密仍然是秘密还是我可以使用一些虚拟值?因此,避免创建一个人们可以获得consumer_secret的设备注册系统?
答案 0 :(得分:0)
对于您的情况,如果您想使用Google / Facebook等作为身份验证提供程序,则需要使用Oauth2的“授权代码”流程。在这种情况下,您作为开发人员在Google / FB注册,并获得使用其API的客户ID和秘密。
然后,您将获得“使用Google / Facebook登录”按钮和代码,您将使用该按钮和代码触发“webview”或嵌入式浏览器,用户将被带到google / facebook并要求他提供登录凭据。
成功后,授权代码将发送到您在Google / Facebook注册为开发者时提供的重定向网址。您将需要捕获此授权代码,然后再次调用相关API以获取访问令牌,然后您可以使用该令牌获取用户的详细信息以便在第一次注册时进行注册,或者如果他之前已通过此方法注册,则对其进行身份验证。