当前位置: 首页 > 知识库问答 >
问题:

带有Express和ember.js的Github OAuth流

马坚
2023-03-14

我对Express.js和Github OAuth api很陌生,但遇到了困难。

router.route('/oauth')
  .get(function(req, res){
    res.redirect('https://github.com/login/oauth/authorize?client_id=XXXX&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fcallback&state=1234')
  })
router.route('/callback')
  .get(function(req, res){
    var code = req.query.code
    res.redirect('https://github.com/login/oauth/access_token?client_id=XXXX&client_secret=YYYY&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fgood&code=' + code)
  })

它会返回一个代码。从这一点开始,我使用该代码获取访问令牌。访问令牌会返回,但它会作为下载到我的机器的文件返回,而不是对我的服务器的响应。我错过了什么?

共有1个答案

程卓君
2023-03-14

不要进行第二次重定向。相反,您希望为令牌交换执行GET请求。您的重定向url参数必须与原始重定向url匹配(确保它是url编码的):HTTP%3A%2F%2Flocalhost%3A8080%2FCallback

var https = require('https');

var options = {
  hostname: 'github.com',
  port: 443,
  path: '/login/oauth/access_token?client_id=XXXX&client_secret=YYYY&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fcallback&code=' + code',
  method: 'GET'
};

var req = https.request(options, function(res) {
  console.log("statusCode: ", res.statusCode);
  console.log("headers: ", res.headers);

  res.on('data', function(d) {
    process.stdout.write(d);
  });
});
req.end();

req.on('error', function(e) {
  console.error(e);
});

https://nodejs.org/api/https.html

 类似资料:
  • 我正在努力正确配置nginx,以确保它可以处理Express(端口8081)和Socket的代理。io(端口3000)。下面是我的配置,它当前为整个请求(不仅仅是Socket.io)产生了502错误: 据我所知,我需要确保Socket使用的Websocket。io已升级到HTTP,但这正是我努力掌握自己需要做什么的地方。可能是两个插座。io和Express需要在不同的端口上运行,然后需要根据我上面

  • 问题内容: 我知道这个问题有答案,但它们并没有为我充分发挥作用。我正在使用Angular 1.4和Express4。Express正在处理API调用,而Angular应该正在处理所有HTML。 我的快递app.js: 这是有角度的app.js 现在,如果我转到http:// localhost:3000 / ,则会得到预期的主Angular视图。问题是当我转到http:// localhost:3

  • 我是NodeJS的新手,我正试图从express和express-generator开始。我已经使用以下命令安装了express: 然后我安装了快速生成器模块: 然后,我为项目创建一个文件夹并安装解除依赖项: 那里一切正常,但当我尝试使用以下命令启动服务器时,问题就出现了: 好像服务启动了但是一启动就关闭了,结果: 当我尝试打开localhost:3000它不起作用。我在网上搜索,我还没有找到解决

  • Ember是一个雄心勃勃的Web应用程序,消除了样板,并提供了一个标准的应用程序架构的JavaScript框架。 Ember is a JavaScript framework for creating ambitious web applications that eliminates boilerplate and provides a standard application archite

  • 可以配置Ember.js来管理应用程序的环境。 配置Ember.js包括以下主题 - S.No. 配置方式和说明 1 配置App和Ember CLI 您可以配置Ember App和CLI以管理应用程序的环境。 2 禁用原型扩展并指定URL类型 可以通过将EXTEND_PROTOTYPES标志设置为false并使用Ember路由器选项指定URL类型来禁用原型扩展。 3 嵌入应用程序和功能标志 您可以

  • 如果我使用,我会得到以下错误: 我找了很长时间,但什么也找不到。