当前位置: 首页 > 知识库问答 >
问题:

将多个第三方和本地帐户与Passport链接在一起

郜玉石
2023-03-14

我已经成功地将帐户链接到用户,正如这里建议的那样。如果登录用户使用OAuth 2.0(例如Google Contacts API)授权第三方,我可以将该信息保存在一个帐户中,然后将该帐户绑定到登录用户。

我想更进一步,使登录体验尽可能无缝。一旦用户将他们的身份绑定到第三方帐户,我希望他们不仅能够使用本地策略(用户名/pwd)登录,然后获取相关的第三方信息,而且还可以通过其他方式:注销时,连接到谷歌将他们作为我的应用程序的用户登录,使req.user=他们的用户信息,就像他们使用本地策略登录一样。这是相关的代码块(还有更多要显示的,但重点是那里。

passport.use(new GoogleStrategy({
        clientID: google_params.client_id,
        clientSecret: google_params.client_secret,
        callbackURL: google_params.callbackURL,
        passReqToCallback: true
    },
    function(req, token, refreshToken, profile, done) {

...
        // If no user in session, set the req.user to the associated user
        User.findOne({
        'username': account.userId
        }, function(err, user) {
            console.log('Account exists already in DB, and is already tied to a user. Logging into users account.');
            req.user = user;
            return done(null, account);
        });

etc...

在检查序列化/反序列化函数时,此代码从未将用户或帐户信息序列化到会话,因此,当该信息在验证回调结束时传递时,它会在页面刷新时消失(同样,因为没有任何信息保存到会话)。我该怎么做?我想的对吗?

暂时还没有答案

 类似资料:
  • 你会认为亚马逊的两种产品会很好地整合在一起。你还会认为亚马逊会在他们的服务上留档。两者都大错特错。 我正在使用与Alexa的帐户链接,并使用AWS Cognito作为我的oauth提供商。我能够成功地链接我的帐户只是罚款,并与每一个后续的alexa调用我得到一个访问令牌返回给我。现在怎么办? 我需要能够从alexa lambda功能访问其他AWS服务,如dynamo、lambda和iot。我想这很

  • 我正在创建一个帐户链接Alexa技能。我得到了链接授权码并将其交换为访问令牌。然后,我尝试将所有参数:代码、访问令牌、技能ID放入Alexa技能激活API。我总是得到一个信息:“无效的帐户链接凭据”。 要怎么做?

  • 我真的在努力让我的头脑循环账户链接到alexa技能。我已经写了一个技能给我信息从strava回来,所有的工作都很好,但我需要一个令牌来访问用户Strava帐户。 我已经阅读了亚马逊的文档,但是对于如何设置链接,我仍然有点困惑。我可以打开Strava登录页面,但我刚从amazon收到一个错误,上面说“无法链接技能”,这是我的设置: 授权URL-https://www.strava.com/oauth

  • 微哨第三方渠道接入服务(以下简称微门户)是微哨基于微信、QQ等第三方平台开发的轻量级门户产品。它提供了部分基础的平台功能以及在第三方渠道使用微哨轻应用的能力,方便用户在没有微哨App的情况下使用微哨服务。 需要特别指出的是,由于第三方渠道的限制,与微哨App相比,微哨微门户仅能支持比较基础的平台能力,如果想获得更良好的体验,建议在运营推广方面主推微哨App。 企业微信部署 本章节适用于企业微信的接

  • 除公证人外,我们的Corda网络还有3个节点。图中显示了每个节点应执行的操作。 只有在这种情况下,我们才会遇到“需要将令牌从帐户持有人转移到乙方”的麻烦 流程代码: 我们需要在C方执行流程,实际持有人是账户持有人,新持有人是乙方。 使用此代码,将返回一个错误:net.corda.core.CordaRuntime 异常:java.lang.非法描述异常:未为以下事务参与者提供流会话:[O = B

  • 我有两个帐户和两个线程。1个线程将钱从1个帐户转到2个帐户,2个线程将钱从2个帐户转到1个帐户,当然前提是有足够的钱。我需要了解死锁情况,并解决死锁情况以确认安全转移。以下是我目前的想法: 账户.java 主类 传输线程.java 为了安全转移,我决定将存款和取款两种方法同步。但怀疑用方法运行实现。我有正确的实现吗?如果不是,解释和纠正将不胜感激。