Google API,Node.js-getToken

时间:2019-03-27 16:23:10

标签: node.js google-api google-api-nodejs-client

我的后端应用程序上有一条路由,对于从前端发送的代码,该路由应返回access token

router.get('/token', (req, res) => {
  const auth = googleService.getAuth();

  auth.getToken(req.query.code, (error, res2) => {
    const data = { code: 200 }

    if (error) {
      data.code = error.code;
      data.error = error.response.data;
    } else {
      console.log(res2);
    }

    res
      .status(data.code)
      .send(data);
  })
});

我从googleService.getAuth()中检索了auth

const { google } = require('googleapis');
const keys = require('../config/keys');

var module = module.exports = {
  getAuth: (token = false) => {
    let auth = new google.auth.OAuth2(
      keys.google.clientID,
      keys.google.clientSecret,
      keys.google.callbackURL
    );

    if (token) {
      auth.credentials = {
        access_token: token,
        refresh_token: null
      };
    }

    return auth;
  },
  youtube: google.youtube('v3')
};

在我的配置文件中,我有callbackURL

module.exports = {
  google: {
    apiKey: 'XXXXXXXXXXXXXXXX',
    clientID: 'XXXXXXXXXXXXXX',
    clientSecret: 'XXXXXXXXXXXXXXX',
    callbackURL: 'http://localhost:3000/google/redirect'
  }
}

我也在控制台中对其进行设置:

enter image description here

但是,调用此路由时,总是出现以下错误:

"error": {
  "error": "redirect_uri_mismatch",
  "error_description": "Bad Request"
}

2 个答案:

答案 0 :(得分:1)

uri需要从auth匹配到令牌。因此,看起来您通过line-height: 24px;端点进行身份验证,然后尝试将令牌发送到<table> <tr> <td style="line-height: 1.6;"> <b>Some looser text in this row</b><br/> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer dignissim, dolor ac iaculis euismod, diam felis elementum nibh, et interdum augue odio eu est. Nam tempor sapien eu arcu tristique rhoncus. Cras magna orci, finibus eget est nec, pharetra elementum lectus. </td> </tr> <tr> <td style="line-height: 1.1;"> <b>Some tighter text in this row</b><br/> In luctus, ex sit amet tincidunt maximus, neque sapien consequat lorem, quis sagittis sem neque eget massa. Donec tincidunt facilisis lacus sit amet mattis. Aliquam convallis, risus in tristique lacinia, nibh purus mollis justo, ut vestibulum dui mauris et libero. Nam purus quam, vestibulum sed velit nec, tempor posuere lacus. Fusce dignissim ac urna eget euismod. Aliquam erat volutpat. </td> </tr> </table>路径。您可以解决此问题。

要这样做,请确保在您的google项目控制台中将重定向uri列入了白名单。您可以通过API访问权限查看此内容(您将在其中看到客户端ID,客户端密码以及重定向uri列表)

答案 1 :(得分:0)

您可能没有本地的重定向URI。

如果是这样,您可以使用https://ngrok.com在2分钟内为您的本地主机提供一个http有效地址

希望会有所帮助