Go 如何处理社交登录示例流

Go 如何处理社交登录示例流,go,authentication,architecture,frontend,backend,Go,Authentication,Architecture,Frontend,Backend,我有一个更具上下文意义的问题,在我的项目中,我应该如何准确地处理社交登录。 使用案例是,我希望允许用户登录Facebook,并保留有关该用户的后端信息(电子邮件、名字、姓氏) 我有一些建议流程,但我不确定这是否是一个正确的方法。 假设我有如上所述的应用程序体系结构。现在我想一步一步地解释完整的成功流程 客户端(Vue应用程序)呼叫AuthProvider(Facebook) AuthProvider返回访问\u令牌 客户端在收到access\u token后,使用access\u token和

我有一个更具上下文意义的问题,在我的项目中,我应该如何准确地处理社交登录。 使用案例是,我希望允许用户登录Facebook,并保留有关该用户的后端信息(电子邮件、名字、姓氏)

我有一些建议流程,但我不确定这是否是一个正确的方法。

假设我有如上所述的应用程序体系结构。现在我想一步一步地解释完整的成功流程

  • 客户端(Vue应用程序)呼叫AuthProvider(Facebook)
  • AuthProvider返回
    访问\u令牌
  • 客户端在收到
    access\u token
    后,使用
    access\u token
    userID
    (?)调用后端端点,如
    /fb\u profile
  • 后端调用AuthProvider,检查客户端
    访问\u令牌
    提供的令牌是否有效
  • AuthProvider返回有关用户的信息获取用户信息后,将其保存到数据库并生成新的JWT令牌
  • 后端将生成的令牌返回给用户

  • 现在我的问题是——这是好方法吗?还是我应该用另一种方式处理?像保持更多的逻辑后端部分?与其从客户端打电话给Facebook,也许我应该打电话给后端,后端打电话给Facebook?

    你似乎走对了方向。有很多方法可以让我做同样的事情,下面是我使用vue/laravel/passport/socialite/github的方法

  • 从前端在控制器中触发重定向,

  • 提供程序(此处为github应用程序)在浏览器中触发,其url使用保存在后端config/env中的客户端id/app name。填写您的登录详细信息

  • 它将重定向为在提供者中创建并在后端配置->在前端显示它,在我的例子中是它的

  • 从前端现在触发控制器中的回调,它将检查用户详细信息是否已经存在,并根据逻辑插入第一次使用的用户。然后将访问令牌发送回前端,该令牌可在前端用于所有操作
  • DB

    以上是请求流的顺序(与您的相同)

    这将是我们用来与Facebook整合的标准做法。在这种情况下,我严格建议您使用Facebook的

    如果遇到以下问题,请参阅下面的链接:


    太好了!谢谢你的帮助!我会走这条路。我尝试过这个解决方案,但我对CORS有问题,我无法解决。我想你已经尝试过解决CORS了。此外,有时(在较少的情况下)cors错误会产生误导,并在/storage/logs/laravel.log中捕获。此外,我还学习了本教程[对于本教程的socialite.github代码-,它可能对我没有帮助,因为我是在Go中编写后端的。但是谢谢,我将查看这些链接:)