2016-11-27 8 views
0
私は難易loginメソッドを呼び出すを抱えている

が、それは次の流星:見つからないcallLoginMethodエラー

$ 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

import { Accounts } from 'meteor/accounts-base' 

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

/client/main.js

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()を呼び出すと、次のエラーが表示されます。

errorClass 
  Details: undefined 
  Error: 404 
  ErrorType: "Meteor.Error" 
  Message: "Method 'simples' not found [404]" 
  Reason: "Method 'simples' not found" 

エラーはどこですか?

答えて

2

私はこのAPIを個人的に使用したことはありませんが、Meteorの内部を一見すると、いくつかの問題があります。

​​は、デフォルトのMeteorログインプロセスの一部として呼び出される組み込みハンドラの配列に追加のハンドラを追加するだけです。

追加のハンドラを既存のプロセスに接続する場合は、Accounts.callLoginMethodmethodNameキーを付けずにコールする必要があります。 methodNameAccounts.callLoginMethodを呼び出す

しかし、この方法はMeteor.methods、ないregisterLoginHandlerであなたによって個別に宣言する必要があり、完全に内蔵されたハンドラをバイパスし、カスタム方法でそれらを置き換えます。

これはおそらくエラーです。Meteor.methodssimplesメソッドを定義する必要があります。また、あなたは、このメソッドの要件のコードをチェックし、ここでコード内のコメントが表示されるはずです。

https://github.com/meteor/meteor/blob/devel/packages/accounts-base/accounts_client.js

1

のみ補完し、ここで取得するために他の誰かのための紹介として維持します。それは

client.js

Accounts.callLoginMethod({ 
    methodArguments: [{tipo: 'simples'}], 
    validateResult: (result) => { 
    console.log('success', result); 
    }, 
    userCallback: function(error) { 
    if (error) { 
     console.log('error', error); 
    } 
    } 
}); 

server.js

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' 
    }) 
    } 
}); 
を働いているその方法
関連する問題