首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Nodejs OAuth错误

Nodejs OAuth错误
EN

Stack Overflow用户
提问于 2016-12-04 17:00:44
回答 1查看 270关注 0票数 0

我是nodejs的新手,特别是在誓言中,不管怎样,我关注nodejs的googleapis,这就是我从现在开始编辑的

代码语言:javascript
代码运行次数:0
运行
复制
var fs = require('fs');
var readline = require('readline');
var google = require('googleapis');
var express = require('express');
var app = express();

var port = 3000;

var OAuth2 = google.auth.OAuth2;
var oauth2client;



app.get('/', function(req, res){

    fs.readFile('client_secret.json', function processClientSecrets(err, content) {
        if (err) {
            console.log('Error loading client secret file: ' + err);
            return;
        }
        // Authorize a client with the loaded credentials, then call the
        // Gmail API.
        var credentials = JSON.parse(content);
        var clientSecret = credentials.web.client_secret;
        var clientId = credentials.web.client_id;
        var redirectUrl = credentials.web.redirect_uris;

        oauth2client = new OAuth2(  
            clientId,
            clientSecret,
            redirectUrl
        );

        var SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'];

        var info = "Accedi a GMail"

        var getCode = oauth2client.generateAuthUrl({
            // 'online' (default) or 'offline' (gets refresh_token) 
            access_type: 'offline',

            // If you only need one scope you can pass it as string 
            scope: SCOPES
        });

        res.send(info+"<br><br><button onclick='window.location.href=\""+ getCode +"\"'>Log in</button>");

    });
});


app.get("/code", function(req,res){
    var code = req.query.code;
    res.send(code);
    oauth2client.getToken(code, function (err, tokens) {
    // Now tokens contains an access_token and an optional refresh_token. Save them. 
        if (!err) {
            oauth2Client.setCredentials(tokens);
            console.log(tokens);
        }
        else{
            console.log(err);
        }
    });
});

console.log('Server listen in port '+port+'. Connect to localhost');
app.listen(port);

我很好地获得了代码,但是当我到达令牌部分时,从getToken函数得到一个无效请求错误

代码语言:javascript
代码运行次数:0
运行
复制
{ Error: invalid_request
at Request._callback (C:\Users\Edoardo\node_modules\google-auth-library\lib\
transporters.js:81:15)
at Request.self.callback (C:\Users\Edoardo\node_modules\google-auth-library\
node_modules\request\request.js:187:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (C:\Users\Edoardo\node_modules\google-auth-library\no
de_modules\request\request.js:1044:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (C:\Users\Edoardo\node_modules\google-auth-li
brary\node_modules\request\request.js:965:12)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7) code: 400 }

我刚从googleapis页面复制过来,我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-12-13 02:14:10

你检查过响应正文了吗?"error“和"error_description”可以为您提供有关问题的更多详细信息。通常是缺少参数或之前使用的代码,这可能会导致错误。向getToken回调中添加第三个参数,如下所示:

在获取响应体的代码中将其更改为:

代码语言:javascript
代码运行次数:0
运行
复制
oauth2client.getToken(code, function (err, tokens) {
    if (!err) {
        console.log(tokens);
        console.log(response.body);
        oauth2Client.setCredentials(tokens);
        //DO something great
    } else {
        console.log(err);
        console.log(response.body.error);
        console.log(response.body.error_description);
        // :(
    }
});

代码语言:javascript
代码运行次数:0
运行
复制
//response parameter added
oauth2Client.getToken(codigo, function (err, tokens,response) {
    if (!err) {
        console.log(tokens);
        console.log(response.body);
        oauth2Client.setCredentials(tokens);
        //DO something great
    } else {
        console.log(err);
        console.log(response.body.error);
        console.log(response.body.error_description);
        // :(
    }
})

我也有同样的问题,所以我开始查看内部的库代码,我发现了这个。有了这个,也许你可以找到你的问题所在。祝你好运;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40957019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档