1

Meteor の oauth パッケージの oauth_server.js にある関数をオーバーライドする必要があります。

交換したい -

var closePopup = function(res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var content =
        '<html><head><script>window.close()</script></head></html>';
  res.end(content, 'utf-8');
};

次のようなもので-

var closePopup = function(res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var content =
        '<html><head><script>window.location.href = "http://www.google.com/";</script></head></html>';
  res.end(content, 'utf-8');
};

このパッケージは流星のコア パッケージなので、単に削除して修正版を追加することはできないと思います。

編集した変数 (関数) をメイン サーバー コードに追加しようとしましたが、Meteor の動作に変化は見られませんでした。

事前に感謝します、ダニエル。

4

2 に答える 2

2

別のオプションは、最近オーバーライドする必要があった関数を自分の関数でオーバーライドすることOAuth._checkRedirectUrlOriginです。関数は、流星のソースコードで必要に応じてオーバーライドされることを意味しているため、次のようにしました。

Meteor.startup(function () {
  Package['oauth'].OAuth._checkRedirectUrlOrigin = function (redirectUrl) {
    console.log(redirectUrl);
    var appHost = "http://localhost:3000";
    var appHostReplacedLocalhost = Meteor.absoluteUrl(undefined, {
      replaceLocalhost: true
    });
    return (
      redirectUrl.substr(0, appHost.length) !== appHost &&
      redirectUrl.substr(0, appHostReplacedLocalhost.length) !== appHostReplacedLocalhost
    );
  };
  // testing if it worked :)
  Meteor.setTimeout(function () {
    console.log(Package['oauth'].Oauth._checkRedirectUrlOrigin.toString());
  }, 5000);
});
于 2015-11-11T07:33:16.373 に答える
2

既存のパッケージをオーバーライドするには、パッケージを作成する必要があります。

のファイルを置き換えたい場合はoauth、oauth のパッケージのすべてのファイルを含む新しいパッケージを作成する必要があります。

次に、この新しいパッケージを配置し/packagesて実行meteor add oauthし、プロジェクトに追加します。新しいパッケージは、既存の標準の流星のものを上書きします。

ただし、このオプションを考慮する必要があります。これは、meteor がパッケージを更新するたびに最新の状態に保つ必要があることを意味します。

于 2013-09-07T08:00:15.050 に答える