如何使其可扩展
首先,您应该注意到所有这些api使用相同的登录机制。它们都使用OAuth进行身份验证。您需要从一般的OAuth库开始利用这一点。不要使用自己的库进行身份验证,这些库对其他提供程序将不可用。如果您不熟悉OAuth2,则添加更多提供程序非常容易。
不幸的是,您需要两个,因为twitter仍然没有跳过OAuth2的潮流。
OAuth需要您为身份验证方创建一个接口。令牌将在服务器之间交换。创建一个可以处理所有通信的入口点。
令牌应与您的帐户存储在单独的表中,这是因为令牌可以是多个令牌和多个链接的配置文件。有些服务为您提供两个令牌,其中之一是刷新令牌。
现在,您设计一个接口,该接口封装了您所需的其他功能。我将为此设置一个单独的REST服务。这样,您可以轻松地将身份验证扩展到其他地方。
一些服务使用JSON进行通信,其他服务则使用XML等。对于高级用户,您需要统一它们。这是一个非常痛苦的过程,但是有可能在这里得出一些共同点。
这里的另一个问题是,并非所有服务都提供相同的功能。这可能意味着您的服务无法提供您指定的完整API。您需要在这里制定一个策略,该策略可以使应用程序正常降级。
这一切都将确保您可以轻松添加新的第三方提供商。
代币问题
令牌的时间有限,因此您需要执行两个cron作业,这些作业可以检查令牌是否仍然可用,否则必须将其删除。您也可以通过此机制刷新令牌。
用户有时会收回令牌。为此做好准备。
数据存储
如果您有这种设计,则需要考虑所需的数据。这部分来自您刚创建的界面。为此设计一些表,并查看数据是否实际可检索。某些服务不允许您获取大量数据。您还应该考虑到,所需的数据越多,隐私消息就越重。因此,请谨慎处理您的需求,否则用户将不会使用它。
为了进行额外的验证,您可以将配置文件存储在单独的但链接到用户的表中。这将为您提供有关某人的更多信息。
还要检查您当地的法律,对于某些数据,您需要采取额外的预防措施。
最后一件事
不要在不使用自己的服务创建帐户的情况下犯错。如果用户被禁止使用Facebook,他将实际上无法登录您的服务。这是您不想创建的情况。这经常被忽略。