Tag: google oauth

Google API服务帐户和nodejs

我希望能够使用nodejs以编程方式更新Youtube播放列表。 从理论上讲,使用Google API和jsonc是可能的。 因为我想在没有用户交互的情况下做到这一点,所以我一直在使用nodejs服务器上的Google API 服务帐号进行对抗。 注意本页没有列出用于Javascript的API客户端库 。 然后,我在Google文档中偶然发现了有关在Google Drive中使用服务帐户的消息: 出于安全原因,客户端JavaScript不支持服务帐户。 服务器端JavaScript的服务帐户尚不支持。 这是说我想达到什么是不可能的? 我无法在NodeJS服务器上使用服务帐户在没有用户交互的情况下更改播放列表?

Google Mapsengine对服务帐户的响应不足

我正尝试在地图引擎中为Google地图创build表格。 我已经将服务帐户添加到mapsenginepipe理面板中的访问列表中,并为其提供了“可编辑”权限。 我也给了它在项目的开发者控制台中的编辑权限。 这是我发送正在发回令牌的访问令牌的地方: var googleapis = require('googleapis'); function connect() { var authClient = new googleapis.auth.JWT( '216755859529-1s2o9qofhd9ea65ang9clpd1936ldfcr@developer.gserviceaccount.com', '../bin/googleoauth2.pem', 'notasecret', ['https://www.googleapis.com/auth/mapsengine'], // User to impersonate (leave empty if no impersonation needed) '' ); authClient.authorize(function(err, tokens) { if (err) { console.log(err); return; } else { console.log(tokens); } googleapis.discover('mapsengine', 'v1').execute(function (err, client) { if (err) { console.log('Problem during […]

客户端(angular度2)authentication,谷歌作为服务器(node.js)

在这里,我一直在寻找答案。 我有一个REST端点的nodejs服务器。 每个端点都有isLoggedIn中间件,所以我可以通过电子邮件对用户进行身份validation。 客户端在端口4200上运行,服务器在端口3113上运行。 我想基本上是让我的客户redirect到Google的同意屏幕,如果没有通过身份validation。 由于端口是不同的,我得到: XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur…d=604408607019-ha937stehe6s3nk7ea892rviihrq5n4s.apps.googleusercontent.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. 现在,我还没有尝试过什么… 🙂 我尝试使用CLI代理function(这是一个webpackconfiguration),并将所有/api请求转发到服务器。 我已经添加头到服务器,但后来我意识到,这是谁发送这个错误,而不是我的服务器。 我在这里看到很多相关的post。 到目前为止,我所见过的最好的解决scheme是放置一个loginbutton,并将呼叫置于href ,因为我不能在域之间进行Ajax调用。 这真的是最好的解决scheme吗? 在服务器上运行身份validation代码时,是不是有其他方法可以从客户端进行身份validation? 我甚至将所有相关端口添加到了API开发者,并将callback调用添加到Google开发者控制台。 顺便说一句,当一个客户端从同一个端口服务时,所有的工作都很好。 谢谢。

NodeMailer – 使用Google服务帐户发送邮件失败,因为“用户名和密码不被接受”

我正在创build一个Twitter机器人,并且正在执行一个方法,如果发生错误,会向我发送电子邮件。 由于我已经在使用Google API访问Google云端硬盘(这里没有问题),所以我决定使用服务帐户发送电子邮件(Google控制台表示可以这样使用) 我到目前为止发送电子邮件的方法是: var config = require('./config/mail'); var google = require('./config/google'); var nodemailer = require('nodemailer'); var send = function (args) { let transporter = nodemailer.createTransport({ 'service': 'gmail', 'auth': { 'type': 'OAuth2', 'user': google.client_email, 'serviceClient': google.client_id, 'privateKey': google.private_key } }); transporter.on('token', token => console.log(token)); let message = { 'from': `"${config.serverFromName}" <${config.serverFromMail}>`, 'to': args.to, 'subject': args.subject, […]

使用NodeJS在Heroku上validationGoogle Sheet API

我正在按照以下示例访问Google表格API: https://developers.google.com/sheets/api/quickstart/nodejs 在示例代码中,以下方法可以获取新的oauth标记。 function getNewToken(oauth2Client, callback) { var authUrl = oauth2Client.generateAuthUrl({ access_type: 'offline', scope: SCOPES }); console.log('Authorize this app by visiting this url: ', authUrl); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('Enter the code from that page here: ', function(code) { rl.close(); oauth2Client.getToken(code, function(err, token) { if (err) { console.log('Error while trying […]

如何从passportjs中的刷新令牌获取新的Google oauth访问令牌

似乎有关于如何从刷新令牌获取访问令牌的一些冲突的build议: 这回答说,passportjs不涉及刷新访问令牌,它应该通过cron作业完成: 刷新Passport.js中的令牌 这回答说:“不需要任何cron作业…当用户使用已过期的访问令牌从API请求数据,这应该会导致您的框架失败,更新,然后重试。 OAuth 2.0 – 访问令牌何时应该刷新令牌? 确保我们始终向Google提供有效的访问令牌的最简单方法是什么? 现在,我们只是将刷新令牌存储在数据库中,从不使用它,每当访问令牌过期时,都会强制用户通过“允许/拒绝权限”stream。

使用passport-google-oauth2与Facebook和Google进行身份validation

我正在尝试使用passport-google-oauth2和passport-facebook分别passport-facebook和Google进行身份validation。 我的auth文件夹的项目结构如下所示: auth/facebook index.js login.js verifyCallback.js auth/google index.js login.js verifyCallback.js auth / google代码如下所示: verifyCallback.js var User = require('../../models/user'); module.exports = function(accessToken,refreshToken,profile,done){ function findOrCreateUser(){ console.log(profile); User.findOne({'google.id':profile._json.id},function(err,user){ if(err){ console.log("An error occured when logging in with google"); console.error(err); done(err); } else if(user) { console.log("User exists in google verify callback"); console.log(user); done(null,user); } else{ console.log("Creating a new user in […]

https://www.googleapis.com/oauth2/v3/certs中的v1,v2和v3之间的区别

我尝试通过Google Sign-in在Android上validation用户,获取帐户名称,通过GoogleAuthUtil.getToken(getApplicationContext(),app,scopes)获取令牌,然后将令牌发送到我的NodeJS后端服务器核实 我发现这个伟大的stackoverflow问题如何解码它,caching密钥ID(KID),所以它不是每次都做一个往返等等(还没有实现这个部分,但有点玩弄它)我唯一的问题是:以下googleapis证书有什么区别: www.googleapis.com/oauth2/v1/certs www.googleapis.com/oauth2/v2/certs www.googleapis.com/oauth2/v3/certs 每个版本的KID是相同的,但内容是明显不同的。 为什么? v2和v3似乎几乎是相同的,除了v2在属性“n”的值的末尾附加“==” 最重要的是,我使用哪个版本? 我认为这些证书被称为JSON Web密钥(JWK)。 我也读过“x5c”这个词是什么意思? PS:我从我的Android应用程序得到我的nodejs令牌是: { "iss": "accounts.google.com", "sub": "SOME_LONG_NUMBER_THAT_I_DONT_KNOW_IF_SHOULD_SHOW", "azp": "SERVER_CLIENT_ID", "email": "ANDROID_USER_EMAIL", "email_verified": "true", "aud": "ANDROID_CLIENT_ID", "iat": "SOME_NUMBER", "exp": "SOME_NUMBER", "alg": "RS256", "kid": "e53139984bd36d2c230552441608cc0b5179487a" }

如何让Google停止在PassportJS中自动logging用户?

我只允许用户使用某个域名login。 这个特定的function起作用,而不是问题的根源。 问题是当用户尝试使用不正确的电子邮件地址login时,用户会陷入一种负面的反馈循环。 参照上面的图片,用户(在没有信息的空白隐身页面中)从第一步开始。 单击login使他们到步骤二,然后到步骤3.试图login以不正确的域名结尾的电子邮件地址使他们到步骤4.这是所需的。 第四步之后,如果他们从网站注销,他们被提出第一步。 这是可取的。 注销代码如下。 app.get("/logout", function(req, res) { req.logout() req.session.destroy() res.clearCookie("connect.sid") res.redirect("/") }) 他们再次点击login后会发生什么是不可取的。 而不是把他们带回到第二步(所需的,所以他们可以用他们的正确的电子邮件地址再次login),它使他们直接到第四步。 就好像谷歌记得最后login的人一样。 这是我的passport.jsconfiguration文件的代码 。 简短的问题:我如何向Google表示不要这样做? 或者触发浏览器,让他们再次login? 我很茫然。 额外的细节:在谷歌的Oauth2.0文档 ,它提到了高清和领域,可以限制login到一个特定的领域。 但是我不知道如何在PassportJSconfiguration文件中configuration它。

谷歌oauth不返回电子邮件通行证authentication

我正在尝试使用节点js的护照模块使用Googlebutton进行login。 我想获得人员的电子邮件ID,名称,个人资料图片。 我正试图下载图片到本地服务器。 即使向作用域添加“电子邮件”,Google也不会返回电子邮件地址,也不会返回用于个人资料图片的链接。 我已经看了这个问题的各种答案,但都说包括userinfo.email。现在已被弃用。 根据谷歌文档新的范围参数是电子邮件下面是我的代码任何帮助赞赏护照 passport.use(new GoogleStrategy({ clientID : configAuth.googleAuth.clientID, clientSecret : configAuth.googleAuth.clientSecret, callbackURL : configAuth.googleAuth.callbackURL, }, function(token, refreshToken, profile, done) { // make the code asynchronous // User.findOne won't fire until we have all our data back from Google process.nextTick(function() { // try to find the user based on their google id User.findOne({ […]