菜鸟教程小白 发表于 2022-12-13 06:23:00

ios - 使用第 3 方 OAuth token 在自定义用户数据库中创建用户对象?


                                            <p><p>我们正在创建一个用户可以登录的服务(现在是后端 + iOS 应用程序)。我们已经完成了我们自己的基于 token 的自定义登录系统并进行了注册。我们现在正在尝试实现他们可以选择“通过 Facebook 登录”或“Twitter”等的功能。(即不使用我们的自定义注册用户名和密码)</p>

<p>我们已经成功实现了客户端功能,但是我们从第三方服务(Facebook)收到的只是一个 token ,以及用户的基本信息。</p>

<p>要使用我们的服务,(当然)需要在我们的服务器上注册一个适当的 CustomUser-object(我们自己的),该对象通常会在我们的自定义注册中创建。通过 3rd 方服务登录时,<strong>我们应该如何为该外部认证用户创建一个 CustomUser-object?</strong></p>

<p>当用户通过我们的应用程序被第三方服务认证时,我们如何以及向我们自己的服务器发送什么来注册(或认证)?
我们收到一个 auth-token(最终会过期),应用程序(客户端)可以在 3rd 上访问用户的基本信息。我们正在考虑将基本信息(例如用户的 user_id 和电子邮件以及 token )发送到我们自己的服务器,并为其创建一个新的用户对象(如果它以前不存在)。但是,我们意识到这根本不是很安全。当用户下次登录我们的服务时,使用相同的 3rd 方身份验证,我们只有用户 user_id 和 email 来匹配。该 token 可能是一个新 token 。这意味着任何拦截到我们服务器的任何第 3 方登录调用的人都会看到,基于第 3 方身份验证登录到现有 customUser 所需的唯一信息是 user_id 和电子邮件。在大多数此类 3rd 方服务(例如 Facebook)上非常公开。</p>

<p>我们一直在尝试使用这些 3rd 方服务阅读 OAuth 和授权/身份验证,但是我们看到的每一个文档都痛苦地专注于 3rd 方身份验证,并且没有触及 < strong>我们自己的第 3 方身份验证..</strong></p>

<p><em>我们做错了吗?</em></p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>实际上,您关于电子邮件和 user_id 的断言并不完全正确,至少对于 Facebook 而言。</p>

<blockquote>
<p>... Which are very public on most such 3rd-party services, such as
Facebook.</p>
</blockquote>

<p>当有人通过 Facebook Oauth 服务登录时,您将获得一个“app_scoped_user_id”,这是 Facebook 为用户和您的应用创建的唯一 ID。每个用户对于他使用的每个应用程序都有不同的“应用程序范围用户 ID”,除了您(应用程序)之外没有人会知道“应用程序范围用户 ID”。</p>

<p> <a href="https://developers.facebook.com/docs/apps/upgrading#upgrading_v2_0_user_ids" rel="noreferrer noopener nofollow">App scope user id docs</a> </p>

<p>所以我想说使用“应用范围用户 ID”作为用户的标识符是安全的,也是最好的方法。</p>

<p>不确定它如何与 Twitter 等其他服务一起使用,但我很确定您可以做类似的事情。即使 user_id 是公开的,它也应该始终是唯一的,您可以使用它来识别您自己的用户。</p>

<p>希望对你有帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用第 3 方 OAuthtoken 在自定义用户数据库中创建用户对象?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29583879/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29583879/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用第 3 方 OAuth token 在自定义用户数据库中创建用户对象?