标签: google-api-nodejs-client

Nodejs中针对Android的Google登录服务器端身份验证

我创建了一个Android应用程序,它从用户请求"Server auth code"并将其发送到Nodejs中的Backend.现在,我想使用GoogleSign In API对此令牌进行身份验证,并获取"access-token"和"refresh-token".

我可以在这里看到Java/Python中的示例代码,使用google提供的库:https://developers.google.com/identity/sign-in/web/server-side-flow

我试图为Nodejs找到一个类似的库,你能提供一个片段或一些包,这可以帮助我吗?

android node.js google-api-nodejs-client google-signin

7
推荐指数
0
解决办法
1195
查看次数

谷歌地图距离矩阵Nodejs超时

我们有一个应用程序,它依赖于谷歌地图距离矩阵 API 来计算两点之间的距离和时间。这是一个 nodejs 应用程序。我们一直在使用这个Google Maps Node.js Client

该应用程序一直工作正常。现在超时了。我们已接受自 7 月 16 日起生效的新定价和服务条款,添加了一个计费帐户并生成了一个新密钥。我们认为可能是这种情况,但我们仍然收到超时错误。

我们的代码如下:

const googleMaps = require("@google/maps");

let mapsClient = googleMaps.createClient({ 
    key: process.env.GOOGLE_MAPS_KEY, 
    Promise: Promise 
});

mapsClient.distanceMatrix({
    origins: fromLat + ',' + fromLng,
    destinations: toLat + ',' + toLng,
    mode: 'driving'
}).asPromise().then(res => {
    // Do something in case of success
}).catch(err => {
    // Do something else in case of error
    console.log('MAPS ERROR', err); // Prints out a timeout
});
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我们做错了什么。在 catch 上记录错误会打印timeout。请帮忙。

google-maps-api-3 node.js google-api-nodejs-client

7
推荐指数
1
解决办法
912
查看次数

如何在没有管理员权限的情况下安装节点版本管理器(NVM)

我的 Windows 机器没有管理员权限。我可以在没有管理员权限的情况下安装 NVM 吗?我尝试使用环境变量路径设置,但它在我的情况下不起作用。

node.js node-modules google-api-nodejs-client nodejs-stream alexa-sdk-nodejs

7
推荐指数
2
解决办法
3万
查看次数

使用Gmail API和Google API节点客户端出现错误500 backendError

我正在尝试将新的Gmail APIGoogle API节点客户端配合使用.我从开发人员控制台创建了一个新项目,设置了一个新的"服务帐户"客户端ID,并启用了对API的访问.

作为概念证明,我只是想在我的收件箱中列出线程.当我为API资源管理器启用OAuth 2.0切换并输入我的电子邮件地址时,请求成功,我看到带有数据的JSON响应.

现在我尝试在Node中做同样的事情:

var googleapis = require('googleapis');

var SERVICE_ACCOUNT_EMAIL = '...SNIP...';

// generated by: openssl pkcs12 -in ...SNIP...p12 -out key.pem -nocerts -nodes
var SERVICE_ACCOUNT_KEY_FILE = 'key.pem';
var jwt = new googleapis.auth.JWT(
        SERVICE_ACCOUNT_EMAIL,
        SERVICE_ACCOUNT_KEY_FILE,
        null,
        ['https://www.googleapis.com/auth/gmail.readonly']);

googleapis
    .discover('gmail', 'v1')
    .execute(function(err, client) {

        jwt.authorize(function(err, result) {
            if(err) console.error(err);
            else console.log(result);

            client.gmail.users.threads.list()
                .withAuthClient(jwt)
                .execute(function(err, result) {
                    if(err) console.error(err);
                    else console.log(result);
            });
        });
    });
Run Code Online (Sandbox Code Playgroud)

首先,我打印authorize()调用的结果,看起来它返回一个令牌,所以我想我已经正确设置了所有OAuth的东西:

{ access_token: '...SNIP...',
  token_type: 'Bearer',
  expires_in: 1404277946,
  refresh_token: …
Run Code Online (Sandbox Code Playgroud)

google-api-nodejs-client gmail-api

6
推荐指数
1
解决办法
2949
查看次数

是应该根据请求创建OAuth2Client还是按用户缓存?

我正在使用谷歌api客户端的节点版本.即:google-api-nodejs-client.

作为其中的一部分,我正在设置oauth-flow(确切地说是'谷歌网络服务器'流程.)

作为身份验证的一部分,这包括执行以下调用:

 var oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
Run Code Online (Sandbox Code Playgroud)

 oauth2Client.setCredentials(userSpecificTokens)
Run Code Online (Sandbox Code Playgroud)

显然,第一个调用是特定于应用程序的,而第二个调用是特定于用户的.

在这种情况下,什么是好的做法?之一:

  1. oauth2Client每个用户拥有1个缓存/保存令牌,并oauth2Client.setCredentials(userSpecificTokens)在每个请求中使用它们.这基本上为oauth2Client每个请求创建一个新的.
  2. 具有oauthClient每个用户包括oauth2Client.setCredentials(userSpecificTokens)已经应用需要和之后高速缓存时被创建.

node.js oauth-2.0 google-oauth google-api-nodejs-client

6
推荐指数
1
解决办法
503
查看次数

Node.js undefined:1 [SyntaxError:意外的输入结束]

我执行node.js脚本时收到以下错误,我尝试通过添加console.log()来跟踪错误但无法找到任何解决方案.[注意:我也搜索过其他Stackoverflow解决方案,但没有一个帮助]

undefined:1
   {"ydht":{"status":{"code":200,"message":"OK"},"records":[
                                                     ^
SyntaxError: Unexpected end of input
at Object.parse (native)
at IncomingMessage.<anonymous> (/tmp/subs_20140130/inc/getData.js:36:24)
at IncomingMessage.EventEmitter.emit (events.js:95:17)
at IncomingMessage.<anonymous> (_stream_readable.js:745:14)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:407:10)
at emitReadable (_stream_readable.js:403:5)
at readableAddChunk (_stream_readable.js:165:9)
at IncomingMessage.Readable.push (_stream_readable.js:127:10)
at HTTPParser.parserOnBody [as onBody] (http.js:142:22)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

var options = {
  host: '<my host>',
  port: 3128,
  path: 'http://<some host>:4080'+searchQuery,
  method: 'GET',
  headers: {
     'App-Auth': cert
  }
};
var req = http.request(options, function(res) {   
  res.setEncoding('utf8'); //DEBUG
  for ( var k in options) { console.log("[LOGGING] options :" …
Run Code Online (Sandbox Code Playgroud)

javascript json node.js google-api-nodejs-client

6
推荐指数
1
解决办法
1万
查看次数

Electron 的 OAuth 2.0 客户端密码

我正在实施 OAuth 2.0Electron以使用 Google Calendar API 并意识到 aclient_secret是必需的。

四处搜索,我看到两个选项:

  1. 硬编码/打包 Electron 应用程序中的秘密。但是,由于Electron应用程序实际上可以在编译后的应用程序中访问其源代码,因此仍然可以提取秘密。
  2. 使用代理服务器(可能由我自己托管)自己获取 OAuth URL 并将其传递给客户端。然而,这似乎只是将问题移到其他地方,因为我现在必须确保必须使用我的代理服务器对用户进行身份验证而产生的安全问题。

到目前为止,执行此操作的最佳做​​法是什么?如果可能,我想避免让用户经历获取他自己的过程client_secret

javascript oauth-2.0 google-oauth google-api-nodejs-client electron

6
推荐指数
1
解决办法
1005
查看次数

未找到 Npm 模块“grunt-sass”。是否已安装?

我使用的是 windows 10。已安装 npm 版本 5.6.0、node v8.10.0 和 Python 2.7。

获得咕噜-萨斯未安装甚至使用命令“故宫安装”安装NPM之后。之后,我使用命令安装了 grunt:

npm install -g grunt-cli
Run Code Online (Sandbox Code Playgroud)

此外,有时会收到类似的错误

Node Sass 尚不支持您当前的环境:Windows 64-bit with Unsupported runtime”

任何帮助将真正appriciated。

node.js npm gruntjs google-api-nodejs-client grunt-sass-lint

6
推荐指数
1
解决办法
8314
查看次数

如何在 Google API NodeJS 客户端中使用 getClient() 时模拟管理员用户

根据defaultauth 示例中的建议,我尝试访问我已为其创建服务帐户的域的目录 api。这是我尝试连接的代码:

import { google } from 'googleapis'

const authClient = await google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/admin.directory.user.readonly']
})

const service = google.admin('directory_v1')

console.log(
    await service.users.list({
        auth: authClient,
        domain: <redacted>
    })
)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试连接时,我收到一条错误消息Error: Not Authorized to access this resource/api。如果我删除creds.json中的文件~/.google,错误将更改为无法找到凭据文件。另外,我可以使用相同的文件访问存储桶,因此我非常确定我的本地环境设置正确,身份验证明智。在过去的几天里,我还与支持团队 G Suite API 团队的某人一起工作,他向我保证我的域上的设置正确。

在网上浏览后,我似乎缺少的是在尝试连接我的服务帐户时模拟管理员帐户。我在网上找到了一些使用 JWT 身份验证策略执行此操作的示例,但我想继续使用默认的身份验证客户端,以便抽象出实现细节。这可能吗?如果是这样,我需要改变什么?我已经尝试在两个调用 (和)中设置subject, 和。delegationEmailgetClientlist

任何帮助将不胜感激。

google-api-nodejs-client

6
推荐指数
1
解决办法
1563
查看次数

重命名 Google Cloud Storage 中的文件?

您可以重命名 Google Cloud Storage 中的文件吗?

我让用户上传照片,但我想让他们能够编辑照片,至少通过更改他们上传照片的名称。我正在通过 Node.js 使用 Javascript。

谢谢!

javascript node.js google-cloud-storage google-api-nodejs-client google-cloud-platform

5
推荐指数
1
解决办法
4249
查看次数