ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19.8
On Mobile App Authentication データベースメソッド

On Mobile App Authentication データベースメソッド 


 

$1 -> On Mobile App Authentication データベースメソッド -> 戻り値 
引数   説明
$1  オブジェクト in モバイルアプリから渡された情報
戻り値  オブジェクト in 認証ステータス

説明   

On Mobile App Authentication データベースメソッド は、4D Server あるいは4D デベロッパーへのモバイルアプリの認証を管理するためのものです。これはユーザーエージェントが4D Server あるいは4D デベロッパーに対してログインリクエストを最初に送ったときに、4D によって自動的に呼び出されます。

注: ユーザーエージェントとはアプリケーションID、デバイスID、そしてチームID によって定義されます。ID はOn Mobile App Authentication データベースメソッド に渡されます(以下参照)。

On Mobile App Authentication データベースメソッド は、初回の接続の際には必ず呼び出されます。モバイルアプリがゲストモードでビルドされていた場合でも呼び出されます。

メソッドは全ての必要な情報を、モバイルアプリから$1 引数(オブジェクト型)内に受け取り、認証ステータスを$0 引数(オブジェクト型)に返さなければいけません。これらの引数は以下のように宣言し初期化しなければなりません:

  //On Mobile App Authentication データベースメソッド
 C_OBJECT($0;$1)
  // ...メソッド用のコード
 $0:=New object //返すオブジェクトを作成するのを忘れないでください

$1 オブジェクト引数に受け取られるプロパティは以下の通りです:

プロパティ名詳細
emailテキストユーザーのEメール。必須ではなく、ゲストアクセスでは空でもよい
applicationオブジェクトモバイルアプリについての情報
idテキストモバイルアプリのID
nameテキストモバイルアプリの名前
versionテキストモバイルアプリのバージョン
deviceオブジェクトモバイルデバイスについての情報(通常は携帯電話)
idテキスト生成されたデバイス固有のID
versionテキストデバイスのシステムバージョン
descriptionテキストデバイスについての詳細
simulatorブールデバイスがシミュレーターである場合にはTrue
teamオブジェクトApple デベロッパーチーム情報
idテキストチームID(これによってデベロッパーはXcode プロジェクトのビルド機能と実行機能を使用できるようになります)
languageオブジェクトユーザーデバイスの言語設定
idテキストユーザーデバイスのカレント言語ID。例: en_US
regionテキストユーザーデバイスのカレントのリージョン設定。例: US
codeテキストユーザーデバイスのカレントの言語。例: en
parametersオブジェクト他にモバイルアプリでカスタム使用のために追加可能なその他の情報
sessionオブジェクトセッション情報
idテキストこの認証用に作成されたセッションUUID。将来の使用のために保存することもできます。
ipテキストクライアントのIP アドレス

情報を処理したあと、データベースメソッドは$0 に以下のプロパティを持つオブジェクトを返さなければなりません:

プロパティ名詳細
userInfoオブジェクトフィルタークエリに使用できるユーザー値。
successブール認証が成功した場合にはTrue 、それ以外の場合にはFalse。success=False の場合、接続は拒否されます。
statusTextテキスト(任意) モバイルアプリで表示するメッセージ。success=true の場合にはようこそメッセージ、success=false の場合にはユーザーへの説明を表示するのに使用することができます。

以下の場合には接続が自動的に拒否されます:

  • $0 に値が何も設定されていない、あるいは$0 が返されない
  • $0 に無効な値が設定されている
  • On Mobile App Authentication データベースメソッド がアプリケーション内にて定義されていない

接続が"localhost" から来る場合には、デベロッパーが接続テストをしているとみなされるため、接続は自動的に受け入れられます。

モバイルアプリの接続リクエストの認証というのは、基本的には提供されたEメールに基づいています。例えば、4d.com ドメインのEメールからの接続のみ認証をしたい場合には、On Mobile App Authentication データベースメソッド を使って以下のように書くことができます:

 If($1.email="@"+Char(At sign)+"4d.com")
    $0.success:=True
 End if

$1 オブジェクトのapplication.id, device.id, あるいは team.id といった情報を用いてユーザーエージェントを識別し、アクセスを認証するか拒否するかを決定することもできます。

モバイルアプリが、"接続にはEメールが必要"オプションにチェックをしないでビルドされていた場合、そのアプリは"ゲストモード"アプリとなります。この場合、$1.email の文字列は空で提供されます。この場合、以下のいずれかを選択することができます:

  • $0.success にTrue を返してゲストへのアクセスを許可する
  • ユーザーエージェント情報を使用してゲストアクセスを識別/評価し、アクセスを認証するか拒否するかを決定する
  • $0.success にFalse を返してゲストへのアクセスを拒否する。これは例えばサーバーがメンテナンスモードの場合などに使用することができます。この場合、ユーザーが再読み込みボタンをクリックした場合にはモバイルアプリ側にエラーが表示されます。

例題  

以下はOn Mobile App Authentication データベースメソッド の一例です:

  //On Mobile App Authentication データベースメソッド
 C_OBJECT($0)
 C_OBJECT($1)
 
 C_BOOLEAN($Boo_simulator)
 C_TEXT($Txt_appID;$Txt_appName;$Txt_appVersion;$Txt_device;$Txt_deviceID;$Txt_email)
 C_TEXT($Txt_IP;$Txt_languageCode;$Txt_languageId;$Txt_languageRegion;$Txt_osVersion;$Txt_sessionId)
 C_TEXT($Txt_teamID)
 C_OBJECT($Obj_request;$Obj_response)
 
 $Obj_request:=$1 //モバイルアプリから提供された情報
 $Obj_response:=New object //処理の後に$0 に返す
 
  //ユーザーのEメールを取得
 $Txt_email:=String($Obj_request.email)
 
 If(Length($Txt_email)=0) //メールは提供されなかった
  // ゲストモード - 接続を認証または拒否する
    $Obj_response.success:=True
  // $Obj_response.success:=False ゲストアクセスを拒否した場合はこちら
 
  // モバイルアプリに表示されるようこそメッセージ(オプション)
    $Obj_response.statusText:="Welcome to my application"
 
 Else
  // 認証モード -  接続を認証または拒否する
    If(Is compiled mode// 配布版である
 
  //例えば4D.com ドメインからのメールであれば認証する
       $Obj_response.success:=($Obj_request.email=("@"+Char(At sign)+"4d.com"))
 
    Else //開発版である
 
  // テスト目的のため、すべてのアドレスを許可する
       $Obj_response.success:=True
 
    End if
 
    If($Obj_response.success)
 
  // モバイルアプリに表示するようこそメッセージ(オプション)
       $Obj_response.statusText:="Authentication successful"
 
    Else
 
       $Obj_response.statusText:=$Obj_request.email+" is not an authorized email address."
 
    End if
 End if
 
  // 識別が必要であればアプリ情報を取得する(任意)
 If($Obj_request.application#Null)
    $Txt_appID:=$Obj_request.application.id // アプリID
    $Txt_appName:=$Obj_request.application.name // アプリ名
    $Txt_appVersion:=$Obj_request.application.version // アプリバージョン
 End if
 
  // 識別が必要であればデバイス情報を取得する(任意)
 If($Obj_request.device#Null)
    $Txt_device:=$Obj_request.device.description //デバイス詳細
    $Txt_deviceID:=$Obj_request.device.id //デバイスID
    $Txt_osVersion:=$Obj_request.device.version //システム情報
    $Boo_simulator:=$Obj_request.device.simulator //デバイスがシミュレーターであればTrue
 End if
 
  // 必要であればチーム情報を取得(任意)
 If($Obj_request.team#Null)
    $Txt_teamID:=$Obj_request.team.id // チームID
 End if
 
  // 必要であればユーザー言語情報を取得する(任意)
 If($Obj_request.language#Null)
    $Txt_languageCode:=$Obj_request.language.Code
    $Txt_languageId:=$Obj_request.language.id
    $Txt_languageRegion:=$Obj_request.language.region
 End if
 
  // セッション情報を取得
 If($Obj_request.session#Null)
  // 将来の使用のために保存も可能
    $Txt_sessionId:=$Obj_request.session.id // この認証のために作成されたUUID
    $Txt_IP:=$Obj_request.session.ip //IP アドレス
 End if
 
  // アプリの引数を取得
 If($Obj_request.parameters#Null)
  // モバイルアプリから追加されるその他の追加情報(C_OBJECT)
 End if
 
 $0:=$Obj_response



参照 

4D for iOS Documentation
MOBILE APP REFRESH SESSIONS
On Mobile App Action データベースメソッド

 
プロパティ 

プロダクト: 4D
テーマ: データベースメソッド

 
ページの目次 
 
履歴 

初出: 4D v17 R2

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)