【问题标题】:authwithcustomtoken not workingauthwithcustomtoken 不起作用
【发布时间】:2015-04-17 12:24:58
【问题描述】:

在我的项目中,我正在使用 node.js 编写 e2e 测试,并且我有一个正在使用的测试火力库。所以我在测试运行中的每个描述之前在节点中创建一个令牌,然后我将它发送到前端(angular.js),然后我使用 authWithCustomToken 函数来验证这个人。

问题是由于某种原因它甚至没有调用该函数,因为我在回调中放置了一个 console.log 语句,并且每次我的代码运行它都会进入 if $location.search 条件但 console.log 没有不打印任何东西。我好像不知道是什么问题。

var Firebase = require('firebase');
var FirebaseTokenGenerator = require('firebase-token-generator');
var rootRef = new Firebase('https://xxxxx');
var data = require('./data_helper.js');

rootRef.child('users').set(data.users[0]);

var credentials =  {
  nonAdmin: {
    uid: 'google', 
    email: 'xxxx'
  },
  admin: {
    uid: 'google', 
    email: 'xxxxx'
  }
};


var logInAndThen = function(options) {
  var secret = 'sdmdfmdsjwdsjwjwwewewe';
  var tokenGenerator = new FirebaseTokenGenerator(secret);
  var token = tokenGenerator.createToken(credentials[options.userType || 'admin']);

  browser.get('/login?token=' + token);

  var alertDiv = by.className('alert');
  //browser.wait(function(){});
  var waitOnFirebase = browser.wait(function() {
    return browser.isElementPresent(alertDiv);
  });

  waitOnFirebase.then(function(data) {
    console.log('-------', data);
    options.cb(data);
  });
};

module.exports = logInAndThen;

--------- 前端角码放入应用程序中。运行---------

if($location.search().token) {
    console.log(Refs.root.toString());  
    Refs.root.authWithCustomToken($location.search().token, function(err, authData) { 
      console.log(err,authData);
    }, {scope: 'email'});
  }

如果有人可以帮助我,我将不胜感激

【问题讨论】:

  • 你到底是如何“发送到前端”的?
  • 我通过将令牌作为查询参数附加到 URL 中来将令牌发送到前端,例如browser.get('/login?token=' + token);
  • 那么您是否使用 angular 获取 $location 并从中提取令牌?
  • @tpie 没错。每当页面加载时,它都会检查 url 路径以查看是否有令牌查询参数。如果有,它将使用令牌来验证此人
  • 您是否看到它出现在浏览器栏中?你能从这个 $location 获取到 console.log 的角度吗?

标签: angularjs node.js firebase


【解决方案1】:

尝试像这样获取令牌(将其放入您的.run):

    var loc = $location.path();
    if(loc.search('login?token') > 0) {
      token = loc.splice(13)
      //now incorporate the 'token' into whatever auth functions you need to.
    }

不完全确定这是否是技术上最“正确”的获取令牌的方式,但它应该适合你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多