【问题标题】:Google OAuth2 client timeout when calling getToken in nodejs在nodejs中调用getToken时Google OAuth2客户端超时
【发布时间】:2018-12-24 19:15:38
【问题描述】:

我使用 Google API 来执行 oauth2。 app key Id和secret已经设置好,使用oauth2Client.generateAuthUrl创建URL成功。

    let {google} = require('googleapis'),
    contacts = google.people('v1'),
    oauth2Client = new google.auth.OAuth2(
      "MY_KEY",
      "MY_SECRET",
      "http://localhost:8886/mbl/User/ImportContact"
    ),
    scopes = [
        'https://www.googleapis.com/auth/contacts.readonly',
      'https://www.googleapis.com/auth/plus.me',
      'https://www.googleapis.com/auth/calendar'
    ],
    url = oauth2Client.generateAuthUrl({
      access_type: 'online',
      scope: scopes
    });

在URL中,我授权访问,然后被重定向到指定的oauthcallback方法。代码格式为

4/AADYYeZzY38aKLr1g11IBN2d_9keAdtN2JhDU1WH5pHAPi_0ECfRVS4a-oDiCE5IHPiB3SnyJ4p59ZEFOOSEDFQ#

看起来不错。

但是,代码执行卡在oauth2Client.getToken。它永远不会超过下一行

const {tokens} = await oauth2Client.getToken(code)

过了一会儿,它给了我超时错误:

错误:连接 ETIMEDOUT 216.58.199.10:443

有人可以帮我吗?我整天都在为此苦苦挣扎。

【问题讨论】:

    标签: node.js oauth-2.0 google-api


    【解决方案1】:

    oAuth2Client.getToken 可能会在回调中返回所需的令牌,您可以从中捕获它。您可能希望在使用 async - await 之前对其进行承诺。

    【讨论】:

    • 感谢@nerdier.js 的回答!是的,我刚刚尝试了回调,并看到错误:{ 错误:在 TLSWrap.onread (net.js:618:25) 处读取 ECONNRESET _errnoException (util.js:992:11) 代码:'ECONNRESET',errno:' ECONNRESET',系统调用:'read',有什么建议可以解决吗?谢谢!
    • @Gary 你是不是在代理后面工作? ECONNRESET 对我来说意味着这一点。
    • 我觉得你说得对,我在中国,所以我需要使用VPN连接到google服务器。如果没有 VPN,我一开始就无法连接到谷歌 API。不确定是否有解决方案。不过谢谢:-)
    猜你喜欢
    • 1970-01-01
    • 2022-08-28
    • 2017-01-11
    • 2019-05-05
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多