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.

Другие вопросы по тегам