首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流星: callLoginMethod未找到错误

流星: callLoginMethod未找到错误
EN

Stack Overflow用户
提问于 2016-11-27 15:44:04
回答 2查看 551关注 0票数 0

我在调用登录方法时遇到了困难,如下所示

代码语言:javascript
复制
$ meteor list
Accounts-base 1.2.14 A user account system
Ecmascript 0.6.1 Compiler plugin that supports ES2015 + in all .js files
Meteor-base 1.0.4 Packages that every Meteor app needs
React 15.0.1 Everything you need to use React with Meteor.
Static-html 1.1.13 Defines static page content in .html files

/server/main.js

代码语言:javascript
复制
import { Accounts } from 'meteor/accounts-base'

Accounts.registerLoginHandler('simples', (ttt) => {
  console.log(ttt);
});

/client/main.js

代码语言:javascript
复制
autenticar(){
  Accounts.callLoginMethod({
    methodName: 'simples',
    methodArguments: [{ tipo : 'simples' }],
    validateResult: function (result) {
    console.log('result', result);
    },
    userCallback: function(error) {
      if (error) {
        console.log('error', error);
      }
    }
  })
}

在调用authenticar()时,我得到以下错误:

代码语言:javascript
复制
errorClass
  Details: undefined
  Error: 404
  ErrorType: "Meteor.Error"
  Message: "Method 'simples' not found [404]"
  Reason: "Method 'simples' not found"

错误在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-27 19:25:17

我从未亲自使用过这个API,但是从Meteor内部的快速浏览中,我看到了一些问题。

Accounts.registerLoginHandler只向内置处理程序数组添加额外的处理程序,这些处理程序作为默认Meteor登录过程的一部分被调用。

如果您试图将一个额外的处理程序插入到现有进程中,则应该调用不带Accounts.callLoginMethod键的methodName

使用Accounts.callLoginMethod调用methodName将完全绕过内置处理程序,并使用自定义方法替换它们,但是该方法需要由您使用Meteor.methods而不是registerLoginHandler单独声明。

因此,这可能是您的错误--您需要使用simples定义Meteor.methods方法。此外,您应该检查代码以了解此方法的要求,请参见代码中的注释:

client.js

票数 2
EN

Stack Overflow用户

发布于 2016-11-28 12:42:22

只是为了补充和保持作为一个推荐人到这里来。这样它就能工作了

client.js

代码语言:javascript
复制
Accounts.callLoginMethod({
  methodArguments: [{tipo: 'simples'}],
  validateResult: (result) => {
    console.log('success', result);
  },
  userCallback: function(error) {
    if (error) {
      console.log('error', error);
    }
  }
});

server.js

代码语言:javascript
复制
Meteor.startup(function () {
  var config = Accounts.loginServiceConfiguration.findOne({
    service : 'simples'
  });
  if (!config) {
    Accounts.loginServiceConfiguration.insert({ service: 'simples' });
  }
});

Accounts.registerLoginHandler((opts) => {
  if(opts.tipo === 'simples'){
    return Accounts.updateOrCreateUserFromExternalService ('simples', {
      id: 0 // need define something
    }, {
      options : 'optional'
    })
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40830729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档