我创建了一个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找到一个类似的库,你能提供一个片段或一些包,这可以帮助我吗?
我们有一个应用程序,它依赖于谷歌地图距离矩阵 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。请帮忙。
我的 Windows 机器没有管理员权限。我可以在没有管理员权限的情况下安装 NVM 吗?我尝试使用环境变量路径设置,但它在我的情况下不起作用。
node.js node-modules google-api-nodejs-client nodejs-stream alexa-sdk-nodejs
我正在尝试将新的Gmail API与Google 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) 我正在使用谷歌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)
显然,第一个调用是特定于应用程序的,而第二个调用是特定于用户的.
在这种情况下,什么是好的做法?之一:
oauth2Client每个用户拥有1个缓存/保存令牌,并oauth2Client.setCredentials(userSpecificTokens)在每个请求中使用它们.这基本上为oauth2Client每个请求创建一个新的.oauthClient每个用户包括oauth2Client.setCredentials(userSpecificTokens)已经应用需要和之后高速缓存时被创建.我执行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) 我正在实施 OAuth 2.0Electron以使用 Google Calendar API 并意识到 aclient_secret是必需的。
四处搜索,我看到两个选项:
Electron应用程序实际上可以在编译后的应用程序中访问其源代码,因此仍然可以提取秘密。到目前为止,执行此操作的最佳做法是什么?如果可能,我想避免让用户经历获取他自己的过程client_secret
javascript oauth-2.0 google-oauth google-api-nodejs-client electron
我使用的是 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
根据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 Cloud Storage 中的文件吗?
我让用户上传照片,但我想让他们能够编辑照片,至少通过更改他们上传照片的名称。我正在通过 Node.js 使用 Javascript。
谢谢!
javascript node.js google-cloud-storage google-api-nodejs-client google-cloud-platform
node.js ×7
javascript ×3
google-oauth ×2
oauth-2.0 ×2
android ×1
electron ×1
gmail-api ×1
gruntjs ×1
json ×1
node-modules ×1
npm ×1