OAuth 2并保存经过身份验证的用户

时间:2016-02-19 作者:Ash Thornton

我有一个很奇怪的情况。

我有一个WordPress站点(站点A),其中有大量注册用户,我使用s2member插件订阅这些成员,以允许访问网站的部分内容。

我想发布另一个用户需要单独订阅的产品,但s2member插件的限制意味着我不能同时为一个用户订阅两个。

我得出的结论是,我需要创建另一个WordPress站点(站点B)(有自己的s2member实例),并让我的用户在那里注册,以获得访问该产品的额外订阅。

我的目标是使在两个Wordpress站点之间跳转的过程尽可能简单,并尝试消除在站点B上重新注册的需要。我希望人们在站点A上注册,然后能够使用站点A上的登录详细信息登录到站点B。

我看过WPMUDev的用户同步插件,但问题是它会为一个用户提取所有s2member数据以及其他所有数据,这是我不想要的。

因此,我开始考虑使用站点A作为OAuth提供者,并在站点B上进行身份验证。我可以在站点B上创建登录会话并获取用户的所有详细信息(当然不包括敏感信息)。

这看起来很有希望,直到我需要给站点B上新认证的用户一个s2member配置文件,以便他们可以订阅我的新产品为止。我不能这样做,除非他们在站点B上正式注册为用户,并且我不能用他们在站点a上的密码注册该用户,因为1)我不想通过HTTP(或HTTPS)发送该信息;2)如果他们在站点a上更新密码,则不会在站点B上更新。

这就引出了我的百万美元问题:how would you register/save a user without a password to my Site B once they have authenticated with Site A?

如果你看到我所解释的情况有任何其他可能性,我愿意接受建议。

谢谢

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

你似乎坚持要让你的生活变得艰难。对最优秀的开发人员来说,实现任何类型的API都是容易出错的,实时同步可能会由于网络错误、bug等而失败,在选择这样的选项之前,我会非常犹豫。

出于多种原因,使用网络可能是最好的选择,但如果您觉得它不适合您的需要,您的另一个最佳选择是直接连接到站点a的DB以获取相关信息。在某种程度上,它是API思想的变体,但由于它只有一个权威的数据源,并且您将使用经过战斗测试的协议来检索信息,因此成功实现的机会要高得多。