Express.js подключается к Twitter
Я пытаюсь выполнить аутентификацию Oauth с помощью Twitter, используя Express.js и Grant на моей машине с Windows 7. Когда я бегу node app.js
в командной строке я получаю следующее:
Вопрос в том, почему MADE IT HERE также не выводится в консоли. Кроме того, какой секрет я должен поместить в app.js, где у меня сейчас "очень секрет"? Это должно быть моим потребительским секретом или просто какой-нибудь строкой?
Я использую Xampp, и когда я хочу запустить в своем браузере (Chrome), я направляю на: http://dummy.com:3000/ и получаю "Эта веб-страница недоступна". Если я вместо этого перейду на http://localhost/xampp/phptest/lions/idk/run.html то получу пустую веб-страницу. Что я должен использовать?
Я пытался следить за этим: https://scotch.io/tutorials/implement-oauth-into-your-express-koa-or-hapi-applications-using-grant
Вот все мои файлы:
app.js
var express = require('express')
, logger = require('morgan')
, bodyParser = require('body-parser')
, cookieParser = require('cookie-parser')
, session = require('express-session');
var fs = require('fs');
var obj = JSON.parse(fs.readFileSync('./config.json', 'utf8'));
var Grant = require('grant-express')
, grant = new Grant(obj) ;
var app = express();
app.use(logger('dev'));
app.use(grant);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cookieParser());
app.use(session({
name: 'grant', secret: 'very secret',
saveUninitialized: true, resave: true
}));
app.get('/handle_twitter_callback', function (req, res) {
console.log('MADE IT HERE');
console.log(req.query);
res.end(JSON.stringify(req.query, null, 2));
});
app.listen(3000, function() {
//document.getElementById("holder").innerHTML="GOT HERE";
console.log('Express server listening on port ' + 3000);
});
config.json
{ "server": {
"protocol": "http",
"host": "dummy.com:3000"
},
"twitter":
{
"key": "myconsumerkey",
"secret": "myconsumersecret",
"callback": "/handle_twitter_callback"
}
}
package.json
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"bin": "./",
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.13.2",
"cookie-parser": "^1.3.5",
"errorhandler": "^1.4.1",
"express": "^4.13.1",
"express-session": "^1.11.3",
"fs": "0.0.2",
"grant-express": "^3.3.3",
"jade": "^1.11.0",
"method-override": "^2.3.4",
"morgan": "^1.6.1",
"multer": "^0.1.8",
"serve-favicon": "^2.3.0"
}
}
run.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>run</title>
<meta name="author" content="stephen" />
<!-- Date: 2015-07-17 -->
</head>
<body>
<script src="app.js"> </script>
</body>
</html>
1 ответ
Здесь следует отметить несколько вещей:
1) Важно отметить, что node.js - это JavaScript как / на сервере. Если вы используете node.js, вам не нужен xampp. Xampp - это сервер, обычно используемый для запуска php. Node создает сам сервер, поэтому вам вообще не нужно использовать xampp.
app.listen(3000, function() {
console.log('Express server listening on port ' + 3000);
});
Является ли ваш файл app.js сообщением о том, что ваш сервер работает на порте 3000. Просто нажмите localhost:3000, чтобы просмотреть любую страницу, которую вы обслуживаете, из файла app.js.
2) Если вы хотите распечатать что-то на консоли, используйте console.log('something');
и вы увидите его в той же консоли, что и ваш Express server...
вещи. Обратите внимание, что вы используете консоль сервера, а не консоль браузера. Похоже, вы пытаетесь с //document.getElementById("holder").innerHTML="GOT HERE";
изменить вещи в браузере из файла вашего сервера, что, вероятно, не то, что вы хотите сделать. Вам нужно будет включить файл для запуска на стороне клиента, чтобы манипулировать dom.
3)
app.get('/handle_twitter_callback', function (req, res) {
console.log('MADE IT HERE');
console.log(req.query);
res.end(JSON.stringify(req.query, null, 2));
});
Вам нужно будет отправиться в localhost:3000/handle_twitter_callback
чтобы достичь этого, и я верю, что вы увидите, что вы ищете.
Я бы посоветовал перейти к обучающей программе, которая объясняет нод и экспресс-заполнение без каких-либо дополнительных действий, а затем пробовать OAuth.