オーダーメイド (単一プロジェクト使用) の場合、アクション ID はインストール時に変更されないため、モバイル アプリでハード コードできますか?
それ以外の場合は、アクション ID を取得するために呼び出しが必要になります。次の 2 つの方法が考えられます。
タグ出力関数を作成し、アクション ID をテンプレートに出力させると、アクション ID を返す特定の URL をモバイル開発者に提供できます。
特定の URL またはクエリの session_end をリッスンする拡張機能を作成します。関連するリクエストをインターセプトして返すことができます:
http://ellislab.com/expressionengine/user-guide/development/extension_hooks/global/session/index.html
両方のアプローチのアクション ID を取得するには:
$actionID = $this->EE->functions->fetch_action_id(__CLASS__, 'login_user');
安全なフォームの利用を検討することをお勧めします。この同じコードを取得して XID を生成し、同じリクエスト (おそらく JSON オブジェクト) で返すことができます。モバイル ログインは、セキュリティを向上させるためにアクション ID に加えてこれを利用できます。 .
$this->EE->functions->form_declaration($formDetails)
参照: http://ellislab.com/expressionengine/user-guide/development/reference/functions.html#form-declaration-data-array
また: http://ellislab.com/expressionengine/user-guide/development/guidelines /security.html#id13
また、追加のログイン/登録レイヤーを気にせず、同じ方法でシミュレートできる既存のネイティブ EE ログイン/登録を利用することも検討してください。
既存の登録を使用する例: http://www.sidd3.com/stand-alone-member-registration-form-in-expressionengine/
ノート:
$actionID = $this->EE->functions->fetch_action_id('Member', 'register_member');
ログインについても同様のものがあります。
$actionID = $this->EE->functions->fetch_action_id('Member', 'member_login');
メンバーのログアウト:
$actionID = $this->EE->functions->fetch_action_id('Member', 'member_logout');
更新:
セキュアとは https を意味するのではなく、フォームがハッカーではなく有効なソースによって投稿されたことを意味します。
さらなる解明
モバイル開発チームがログインに取り組んでいるとしましょう。ユーザー名とパスワードを入力するフォームが必要です。また、XID (セキュリティ チェック) 用と ACT 用の 2 つの非表示フィールドも必要です。フォームは Web サイトのルート (例: www.mydomain.com) に送信されます。
作成する必要があるのは、隠しフィールド (または値) を生成するプラグインだけです。このプラグインは、次のことができます。
$actionID = $this->EE->functions->fetch_action_id("Member", 'member_login');
$formDetails = array('action' => '',
'name' => 'mobile-login',
'id' => $this->EE->TMPL->form_id,
'class' => $this->EE->TMPL->form_class,
'hidden_fields' => array('ACT' => $actionID),
'secure' => TRUE
);
return $this->EE->functions->form_declaration($formDetails);
「mobile-login」という名前のルート テンプレート グループのテンプレートで使用する場合:
{exp:your_plugin_name form_id="my_id" form_class="my_class"}
これにより、使用されているテンプレートに次のものがレンダリングされます。
<form class="my_class" id="my_id" name="mobile-login" method="post" action="http://www.my-domain.com">
<div class="hiddenFields">
<input type="hidden" name="XID" value="8b13dcd4afa21fe00065319e92a53d8e72a4f687">
<input type="hidden" name="ACT" value="15">
<input type="hidden" name="site_id" value="1">
</div>
したがって、モバイル開発者は、そのまま使用するか、XID を取り出して、作成したフォームに含めることができます。
EE が自動的に実行するため、実際のログイン用に新しい ACtion を取得するために別のアドオンは必要ありません。