2016-04-02 4 views
0

Я «продвинутый новичок» с API-интерфейсом javascript, поэтому мои потребности могут быть второстепенными, но после того, как я всю ночь колотил головой о стену, оцените любые основные рекомендации, которые вы можете предоставить. Я пытаюсь аутентифицировать приложение, используя Oauth2, чтобы попасть на мой сайт BaseCamp.Не удается получить данные ответа с помощью Oauth2/BaseCamp API

Я использую Grant Express и успешно получил registered my app, так что я получил client_ID, client_secret и перенаправил uri. Для перенаправления uri я добавил папку с именем «auth», но единственное, что в ней, - это файл index.html, который пуст. Таким образом, URL-адрес перенаправления http://example.com/auth.

На моей локальной машине я создал каталог под названием OAuth и в нем гласил: НПХ установить экспресс НПЕ установить грант-экспресс

Я создал файл app.js, который выглядит следующим образом:

var express = require('express') 
    , session = require('express-session') 
var Grant = require('grant-express') 

var config = { 

    server: { 
    protocol: "http", 
    host: "127.0.0.1:3000" 
    }, 
    basecamp: { 
    key: "key_from_basecamp", 
    secret: "secret_from_basecamp", 
    callback: "/basecamp/callback" 
    } 
} 

var app = express() 
app.use(session({secret:'grant', 
    resave: true, 
    saveUninitialized: true})) 
app.use(new Grant(config)) 
app.get("/basecamp/callback", function (req, res) { 
    console.log(req.query) 
    res.end(JSON.stringify(req.query, null, 2)) 
})  
app.listen(3000, function() { 
    console.log('Express server listening on port ' + 3000) 
}) 

файл package.json выглядит следующим образом:

{ 
    "name": "auth", 
    "version": "1.0.0", 
    "description": "", 
    "main": "app.js", 
    "dependencies": { 
    "express": "^4.13.4", 
    "grant-express": "^3.6.0" 
    }, 
    "devDependencies": {}, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC" 
} 

Я иду в терминал и введите node app.js и г et the response: Express server listening on port 3000. Все хорошо?

Когда я иду в браузер и введите http://localhost:3000/connect/basecamp URL-адрес имеет перенаправление: https://launchpad.37signals.com/authorization/new?client_id=client_id_from_basecamp&response_type=code&redirect_uri=http%3A%2F%2F127.0.0.1%3A3000%2Fconnect%2Fbasecamp%2Fcallback&type=web_server но страница содержит следующую ошибку: :error: Provided redirect_uri is not approved

Если я получил: http://localhost:3000/connect/basecamp/callback Я вижу эту ошибку (также в консоли сервера) { error: { error: 'Grant: OAuth2 missing code parameter' } }

В Basecamp API documentation он говорит: Настройте библиотеку OAuth 2 с cLIENT_ID, client_secret и redirect_uri. Сообщите , чтобы использовать https://launchpad.37signals.com/authorization/new, чтобы запросить разрешение и https://launchpad.37signals.com/authorization/token, чтобы получить токены доступа. Что такое «это» и как, я бы сказал, чтобы использовать эти URL? Добавить эти url в файл app.js как объекты? Или я могу войти в другой файл? Мне нужно что-то добавить в http://example.com/auth?

Не уверен, куда идти отсюда .... Большое спасибо за любую помощь.

ответ