0

私は JavaScript API の「上級初心者」なので、私のニーズはおそらく 2 年生ですが、一晩中壁に頭をぶつけた後、提供できる基本的なガイダンスに感謝します。BaseCamp サイトにアクセスするために Oauth2 を使用してアプリを認証しようとしています。

私は Grant Express を使用しており、client_ID、client_secret、リダイレクト uri を受け取るようにアプリを正常に登録しました。リダイレクト uri 用に「auth」というフォルダーを追加しましたが、その中にあるのは空の index.html ファイルだけです。したがって、リダイレクト URL はhttp://example.com/authです。

ローカル マシンで oauth という名前のディレクトリを作成し、その中で以下を実行しました: npm install express npm install grant-express

次のような 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と、応答が返されます: Express server listening on port 3000. 大丈夫ですよね?

ブラウザにアクセスしてhttp://localhost:3000/connect/basecampと入力すると、URL は次の 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 ドキュメントには次のように書かれています: 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に何かを追加する必要がありますか?

ここからどこへ行くべきかわからない....どんな助けにも感謝します。

4

1 に答える 1

0

問題は私のリダイレクト URL でした。http://localhost:3000/connect/basecamp/callbackである必要があり ます新しいエラーに!

于 2016-04-02T19:52:25.267 に答える