桌面应用程序只支持oauth_callback值'oob'/ oauth / request_token [英] Desktop applications only support the oauth_callback value 'oob'/oauth/request_token

查看:134
本文介绍了桌面应用程序只支持oauth_callback值'oob'/ oauth / request_token的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


获取OAuth请求令牌时出错:{p}我正在尝试使用NodeJS上的OAuth进行身份验证, statusCode:401,data:'\\\
\\\
桌面应用程序仅支持oauth_callback值\'oob\'\\\
/ oauth / request_token\\\
\\\
'}


这是我的代码(server.js)

  var express = require('express'); 
var util = require('util');
var oauth = require('oauth');

var app = express.createServer();

//在此获取您的凭据:https://dev.twitter.com/apps
var _twitterConsumerKey =1;
var _twitterConsumerSecret =2;

var consumer = new oauth.OAuth(
https://twitter.com/oauth/request_token,https://twitter.com/oauth/access_token,
_twitterConsumerKey,_twitterConsumerSecret,1.0A,http://127.0.0.1:8080/sessions/callback,HMAC-SHA1);

app.configure('development',function(){
app.use(express.errorHandler({dumpExceptions:true,showStack:true}));
app。使用(express.logger());
app.use(express.cookieParser());
app.use(express.session({secret:very secret}));

app.use(function(req,res,next){
res.locals.user = req.session.user;
next();
});
});

app.get('/ sessions / connect',function(req,res){
consumer.getOAuthRequestToken(function(error,oauthToken,oauthTokenSecret,results){
if (错误){
res.send(获取OAuth请求令牌时出错:+ util.inspect(error),500);
} else {
req.session.oauthRequestToken = oauthToken;
req.session.oauthRequestTokenSecret = oauthTokenSecret;
res.redirect(https://twitter.com/oauth/authorize?oauth_token=+ req.session.oauthRequestToken);
}
});
});

app.get('/ sessions / callback',function(req,res){
util.puts(>>+ req.session.oauthRequestToken);
util.puts(>>+ req.session.oauthRequestTokenSecret);
util.puts(>>+ req.query.oauth_verifier);
consumer.getOAuthAccessToken req.session.oauthRequestToken,req.session.oauthRequestTokenSecret,req.query.oauth_verifier,function(error,oauthAccessToken,oauthAccessTokenSecret,results){
if(error){
res.send(访问令牌:+ util.inspect(error)+[+ oauthAccessToken +]+[+ oauthAccessTokenSecret +]+[+ util.inspect(results)+],500);
} else {
req.session.oauthAccessToken = oauthAccessToken;
req.session.oauthAccessTokenSecret = oauthAccessTokenSecret;

res.redirect('/ home');
}
});
});

app.get('/ home',function(req,res){
consumer.get(http://twitter.com/account/verify_credentials.json,req。 session.oauthAccessToken,req.session.oauthAccessTokenSecret,function(error,data,response){
if(error){
res.redirect('/ sessions / connect');
// res.send(get twitter screen name:+ util.inspect(error),500);
} else {
var parsedData = JSON.parse(data);

// req.session.twitterScreenName = response.screen_name;
res.send('您已登录:'+ parsedData.screen_name);
}
});
});

app.get('*',function(req,res){
res.redirect('/ home');
});

app.listen(8080);

提前感谢

解决方案

填写您的Twitter设置开发账户中的回调URL字段。


I'm trying to authenticate with OAuth on NodeJS and I'm getting this error:

Error getting OAuth request token : { statusCode: 401, data: '\n\n Desktop applications only support the oauth_callback value \'oob\'\n /oauth/request_token\n\n' }

Here is my code (server.js)

var express = require('express');
var util = require('util');
var oauth = require('oauth');

var app = express.createServer();

// Get your credentials here: https://dev.twitter.com/apps
var _twitterConsumerKey = "1";
var _twitterConsumerSecret = "2";

var consumer = new oauth.OAuth(
    "https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token", 
    _twitterConsumerKey, _twitterConsumerSecret, "1.0A", "http://127.0.0.1:8080/sessions/callback", "HMAC-SHA1");

app.configure('development', function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    app.use(express.logger());
    app.use(express.cookieParser());
    app.use(express.session({ secret: "very secret" }));

    app.use(function(req, res, next) {
        res.locals.user = req.session.user;
        next();
    });
});

app.get('/sessions/connect', function(req, res){
    consumer.getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){
        if (error) {
            res.send("Error getting OAuth request token : " + util.inspect(error), 500);
        } else {  
            req.session.oauthRequestToken = oauthToken;
            req.session.oauthRequestTokenSecret = oauthTokenSecret;
            res.redirect("https://twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken);      
        }
    });
});

app.get('/sessions/callback', function(req, res){
    util.puts(">>"+req.session.oauthRequestToken);
    util.puts(">>"+req.session.oauthRequestTokenSecret);
    util.puts(">>"+req.query.oauth_verifier);
    consumer.getOAuthAccessToken(req.session.oauthRequestToken, req.session.oauthRequestTokenSecret, req.query.oauth_verifier, function(error, oauthAccessToken, oauthAccessTokenSecret, results) {
        if (error) {
            res.send("Error getting OAuth access token : " + util.inspect(error) + "["+oauthAccessToken+"]"+ "["+oauthAccessTokenSecret+"]"+ "["+util.inspect(results)+"]", 500);
        } else {
            req.session.oauthAccessToken = oauthAccessToken;
            req.session.oauthAccessTokenSecret = oauthAccessTokenSecret;

            res.redirect('/home');
        }
    });
});

app.get('/home', function(req, res){
    consumer.get("http://twitter.com/account/verify_credentials.json", req.session.oauthAccessToken, req.session.oauthAccessTokenSecret, function (error, data, response) {
        if (error) {
            res.redirect('/sessions/connect');
            // res.send("Error getting twitter screen name : " + util.inspect(error), 500);
        } else {
            var parsedData = JSON.parse(data);

            // req.session.twitterScreenName = response.screen_name;    
            res.send('You are signed in: ' + parsedData.screen_name);
        } 
    });
});

app.get('*', function(req, res){
    res.redirect('/home');
});

app.listen(8080);

Thanks in advance.

解决方案

Fill up the "Callback URL" field in your Twitter settings dev account.

这篇关于桌面应用程序只支持oauth_callback值'oob'/ oauth / request_token的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆