3

Omniauthのデフォルトは、既存のウィンドウで開いている場合は美しく機能しますが、ポップアップコンテキストでどのように機能するかはわかりません。また、JavaScriptを介して対話の大部分を処理しています。

4

2 に答える 2

15
var newwindow;
function login(provider_url, width, height) {
  var screenX     = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft,
      screenY     = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop,
      outerWidth  = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.body.clientWidth,
      outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : (document.body.clientHeight - 22),
      left        = parseInt(screenX + ((outerWidth - width) / 2), 10),
      top         = parseInt(screenY + ((outerHeight - height) / 2.5), 10),
      features    = ('width=' + width + ',height=' + height + ',left=' + left + ',top=' + top);

      newwindow = window.open(provider_url, 'Login', features);

  if (window.focus)
    newwindow.focus();

  return false;
}

Provider_urlを「/auth/facebook」に置き換えるか「/auth/twitter」が機能するはずです。

コールバックURLで、

<script type="text/javascript">
  window.opener.location = '<%= @redirect_to %>';
  window.close();
</script>

親ウィンドウを更新するページを@redirect_toが指すようにすると、ページを更新できます。

于 2011-01-05T01:01:50.867 に答える
3

自分でこれを行うことができるようですか?

ユーザーが「Facebook経由でログイン」をクリックすると、JSを使用して/ auth/facebookの場所でウィンドウをポップオープンします。'callback'は、この同じウィンドウで/ auth/callbackに戻るだけです。コールバックで作業を終えたら、現在のウィンドウを閉じて親を更新しますか?

于 2010-12-05T21:31:38.113 に答える