Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何使用相同的Twitter应用程序使用来自一个域的多个主机名进行身份验证?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_674_2@
我有两个主机名由我的DNS发送到同一个IP:

> theark.info
> www.theark.info

我使用theark.info在我的Twitter应用程序中明确设置了我的回调和域名.确保我可以使用www.theark.info为Oauth使用相同的Twitter应用程序的最佳方法是什么,因为我目前收到错误

在我的DNS中,我的DNS中有一个指向theark.info的CNAME www

也许我需要使用Express和Javacsript对请求操纵DOM?

@H_674_2@

解决方法

您无法更改Twitter(或任何其他OAuth提供商),它们都只提供一个回调到一个域.一个简单的解决方案是重新路由从 http://domain.comhttp://www.domain.com的所有请求,因此所有访问者在进行身份验证之前最终都会访问www.domain.com.您应该能够在DNS或req.header重定向服务器端执行此操作:

app.get('/*',function(req,res,next) {
  if (req.headers.host.match(/^www/) !== null ) {
    res.redirect('http://' + req.headers.host.replace(/^www\./,'') + req.url);
  } else {
    next();     
  }
})

复制自this answer.

使用passport.js进行身份验证时,请尝试指定回调网址:

passport.use(new TwitterStrategy({
    consumerKey: auth_keys.twitter.consumerKey,consumerSecret: auth_keys.twitter.consumerSecret,callBACkURL: auth_keys.twitter.callBACkURL
  },function(token,tokenSecret,profile,donE) {
    process.nextTick(function () {
      User.twitterAuth({ profile: profile },function (err,user) {
        return done(err,user);
      });
    });
  }
));

并确保callBACkURL与Twitter中配置的完全相同.如果您在localhost上运行节点进行开发,请尝试两个不同的密钥文件,并在twitter上创建另一个身份验证应用程序,其中127.0.0.1:3000作为回调地址.您可以切换开发和生产的关键文件

if (app.get('env') == 'development') {
  auth_keys = require('./lib/keys_dev');
} 
if (app.get('env') == 'production') {
  auth_keys = require('./lib/keys_live');
}
@H_674_2@ @H_674_2@
@H_674_2@
@H_674_2@

大佬总结

以上是大佬教程为你收集整理的node.js – 如何使用相同的Twitter应用程序使用来自一个域的多个主机名进行身份验证?全部内容,希望文章能够帮你解决node.js – 如何使用相同的Twitter应用程序使用来自一个域的多个主机名进行身份验证?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。