Oauth 2.0 Dart中的服务器端OAuth2

Oauth 2.0 Dart中的服务器端OAuth2,oauth-2.0,dart,google-oauth,Oauth 2.0,Dart,Google Oauth,有很多关于如何在Dart客户端(在浏览器中)中使用OAuth2的示例,但我找不到任何关于如何在服务器端实现身份验证的示例 例如,对于Node.JS,有类似的框架,但我找不到与Dart类似的框架 作为一个用例,可能是一个非SPA项目,我需要提供登录到Google/Facebook/Twitter/等的信息 任何人都可以使用rawdart:ioHttpServer或任何类似或的服务器端框架提供任何代码片段吗 描述中提到了客户机库,但也指出它只适用于“dart:io”,这意味着它是针对服务器的 及

有很多关于如何在Dart客户端(在浏览器中)中使用OAuth2的示例,但我找不到任何关于如何在服务器端实现身份验证的示例

例如,对于Node.JS,有类似的框架,但我找不到与Dart类似的框架

作为一个用例,可能是一个非SPA项目,我需要提供登录到Google/Facebook/Twitter/等的信息


任何人都可以使用raw
dart:io
HttpServer
或任何类似或的服务器端框架提供任何代码片段吗

描述中提到了客户机库,但也指出它只适用于“dart:io”,这意味着它是针对服务器的

(客户机和服务器)

Aqueduct()在dart中有一个完整的oauth2实现

不幸的是,它依赖PostgreSQL作为oauth2令牌的存储库。这意味着每个请求至少有一个db访问权来检索令牌


但是源代码在那里,您可以尝试更好的方法。…

框架还有一个完整的OAuth2实现:


包含在OAuth2传输本身上的代码摘要;存储、数据库等由您选择。

不幸的是,第一个库依赖于客户端-它显示弹出窗口,并处理客户端回调。对于服务器端OAuth2,您需要要求服务器对某个URL(您可以配置)进行回调,因此有相当多的服务器端特定代码来支持处理这些回调。即使在Google开发者控制台中注册时,客户端和服务器端的身份验证凭据也会出现完全不同的对话框。这很奇怪,因为自述文件中说明它需要“dart:io”,因此无法在客户端上使用。我在这里问过这个问题,当我收到反馈时,我会及时更新这个答案。我知道oauth在客户端和服务器端是不同的,第一个库肯定是服务器端。(我猜您不想构建Oauth提供程序,而是想让客户端使用其他Oauth提供程序在您的服务器上进行身份验证。)该软件包的自述文件现在包含一些演示代码,其中有一个接口,可以在Aquedute中为Oauth 2.0实现不同的存储机制(或使用无存储机制)。提供了一个使用PostgreSQL的接口实现;这可以扩展到成千上万的用户,没有问题。如果要管理自己的存储,请实现以下类: