【问题标题】:Account Linking with my own OAuth server in Actions on GoogleActions on Google 中的帐户与我自己的 OAuth 服务器的关联
【发布时间】:2019-04-06 07:01:59
【问题描述】:

我在 Google 应用上的操作的帐户关联中使用“OAuth 和 Google 登录”和“授权代码流”。我已经使用Passport js 编写了自己的服务器,并在其中实现了 Google 身份验证,并将其部署到 Heroku。 我在浏览器中对其进行了测试,它工作正常并成功提供了访问令牌和刷新令牌,但我面临的问题是当我将它与我在谷歌应用程序上的操作集成时,它正确执行身份验证并且没有将 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 应用的客户信息。

【问题讨论】:

    标签: passport.js actions-on-google


    【解决方案1】:

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

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

    Google 将获取 auth code 并调用您的 Token URL 以获取 auth tokenrefresh token .稍后,它还将使用此 URL 将 refresh 令牌 换成新的 auth 令牌

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

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

    即使您需要额外的范围来访问其他 Google 资源,Google Sign In for Assistant 也可能是不错的选择。见https://stackoverflow.com/a/50932537/1405634

    【讨论】:

    • 在我的代码中,似乎护照 js 调用了他们自己的令牌 URL(不是我提供的那个)并成功地为我提供了身份验证令牌和刷新令牌,但是我该如何发送身份验证令牌返回我的应用程序?
    • 嗯,passport.js 正在使用 Google 的令牌交换点。它用于创建 OAuth 客户端,而 Assistant 需要的是 OAuth 服务器。我已经更新了我的答案。
    • 其实我想访问一些 google 服务(例如:Google Drive、Google Ads 等)并访问这些 API,我需要为它们添加范围,以及 Google Sign In for Assistant不允许添加范围。我也没有任何现有的 Google 登录登录网页。
    • Passport 正在使用 Google 登录。答案更新为另一个可能对您有所帮助的 SO 问题的链接。 (stackoverflow.com/a/50932537/1405634)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多