web-dev-qa-db-ja.com

他のサーバーからユーザーログインをリダイレクトする方法

ユーザーログインは、他のdrupal cas(Central Authentication Service)を使用するサイトからのものです。次に、メインサイトにアクセスし、認証されたユーザーがコンテンツを表示できます。メインサイトはDrupalgapを使用してモバイル用のインターフェースを再設計します。

これで、Webブラウザーを使用するときに、ログインしてコンテンツの表示を開始することができます。しかし、Drupalgapでそれを行う方法がわかりません。一部のアプリが他のサイトのアカウントでログインできることを確認しました。ログインが成功すると、リダイレクトされてアプリに戻ります。

誰かがそれを行う方法を知っていますか?

他のサイトのログインURLを使用しようとしています。

bl('Login', 'www.example.com/cas', { InAppBrowser:true });

これにより、アプリページ内ではなく、新しいWebブラウザーが開きます。ログインに成功すると、私のメインサイトに戻るためのリンクがあります。これらは、元のアプリ内ではなく、新しいWebブラウザーを介して動作しています。

1
artphys

Drupal=側で、hook_form_alter()を実装するカスタムモジュールを作成し、それを使用してカスタム#submitハンドラーをuser_login_formにアタッチします。カスタム送信ハンドラーを使用すると、ユーザーをヘッドレスDrupalGap Webアプリにリダイレクトできます。

/**
 * Implements hook_form_alter().
 */
function example_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'user_login_form' && arg(0) == 'drupalgap') {
    $form['#submit'][] = 'example_user_login_form_submit';
  }
}

function example_user_login_form_submit($form, &$form_state) {
  $uid = 123; // This id will be somewhere in the $form or $form_state object.
  drupal_goto('https://example.com/#user_' . $uid);
}

drupalgapをサービスエンドポイントパスに置き換えますが、デフォルトではdrupalgapです。

1