在Google的“操作”中与我自己的OAuth服务器进行帐户链接

时间:2018-11-02 01:52:46

标签: passport.js actions-on-google

我在Google应用程序上的帐户关联中使用“ OAuth和Google登录”和“授权代码流”。我已经使用Passport js编写了自己的服务器,并在其中实现了Google身份验证,并将其部署到了Heroku。 我在浏览器中对其进行了测试,它可以正常工作并成功提供访问令牌和刷新令牌,但是我面临的问题是,当我将其与我在google应用上的操作集成时,它可以正确执行身份验证,并且没有将accessToken发送回我应用程序,我不知道应该在“令牌URL”字段中输入什么。下面是服务器的代码。

passport.use(new GoogleStrategy({
    // authorizationURL: 'https://accounts.google.com/o/oauth2/auth',
    // tokenURL: 'https://www.googleapis.com/oauth2/v3/token',
    clientID: keys.googleClientID,
    clientSecret: keys.googleClientSecret,
    callbackURL: '/auth/google/callback'
  },
  (accessToken, refreshToken, profile, done) => {
    return done(null, {
      token: accessToken
    })
  }
));

app.get(
  '/auth/google',
  passport.authenticate('google', {
    scope: ['profile', 'email']
  })
);

app.get('/auth/google/callback',
  passport.authenticate('google', {
    failureRedirect: '/login'
  }),
  function(req, res) {
    console.log(req.user.token)
    res.send(req.user.token)
  });

app.get('/', (req, res) => {
  res.send('<h1>Hello express</h1>');
});

,这是我的Google Assistant应用的客户信息。 enter image description here

1 个答案:

答案 0 :(得分:1)

虽然我不确定,但似乎您混淆了授权URL 令牌URL

授权URL 是一个向用户显示登录屏幕的页面,最终将使用临时的身份验证代码将用户重定向到Google的重定向URI。

Google将采用验证码并调用您的令牌URL 以获取 auth令牌刷新令牌 。稍后,它还将使用此URL将刷新令牌交换为新的 auth令牌

通常,passport.js用于创建OAuth服务的登录屏幕,这与Assistant所需要的相反。因此,不清楚为什么要使用它。

如果您只是希望用户登录其Google帐户以获取其个人资料和电子邮件,也不清楚为什么要使用OAuth-您可以使用Google Sign In for Assistant来获取。

即使您需要其他范围来访问其他Google资源,也可以使用Google Sign for Assistant。参见https://stackoverflow.com/a/50932537/1405634