ログイン履歴を取得する

[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)
[まとめA～M](https://qiita.com/Keiji_otsubo/items/f3ddedee6793bf1576f8)

いくつか方法がありそうです。

# 普通にレポートを使ってみる

[ユーザーレポート：ログイン日が空白で表示される](https://trailhead.salesforce.com/en/trailblazer-community/feed/0D54S00000IQXkI)

ただし、管理者権限がないとうまく表示されないようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/79d2474b-59f8-fffe-a364-4e00f4363ec6.png)



# プラットフォームイベントのLogin Event Typeを取得する

ブラウザの情報は取得できそう。しかしデバイスは分からない

[イベントログファイルのダウンロードと視覚化](https://trailhead.salesforce.com/ja/content/learn/modules/event_monitoring/event_monitoring_download)

[Login Event Type](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile_login.htm)

----------------------------------------------
本番環境を見るとログがほとんどない。プレイグランドには多くある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/0dc53cca-7e3f-d6ae-00e3-332a39eccf1b.png)

+ [ログの記録開始](https://successjp.salesforce.com/article/NAI-000437)
+ [ログの取得方法](https://successjp.salesforce.com/article/NAI-000444)

# ログイン履歴のcsvファイル

+ OSは取得できるが、デバイスまでは分からない。PCかモバイルデバイスかはOSで判定？しかしMacとiphoneの区別が分からない？
+ [ユーザーのログインがログイン履歴と監査証跡に記録されない (または消去される) 可能性はありますか](https://qiita.com/Keiji_otsubo/items/5542afd1286ea7c80cf3)

# レポート

[ユーザログインレポートを作成して、1 日にログインした一意のユーザーの総数を表示する](https://help.salesforce.com/s/articleView?id=000328233&type=1)

[User Report: Login Date Displays as Blank](https://trailhead.salesforce.com/en/trailblazer-community/feed/0D54S00000IQXkISAX)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/778cd066-aa1d-f96c-b2a5-a937486ff652.png)


# モバイル用のカスタムレポートタイプ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/f5f0bc90-ec3e-1468-64ad-fb8c4500e89b.png)



[Salesforce for Android and iOS アプリケーションからモバイルログインを追跡する](https://help.salesforce.com/s/articleView?id=000332251&type=1)


元の質問 : [使用端末の確認レポート](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000HnNxHSAV)


# CURLを使って実際にイベントログを取得する方法

[Salesforce Reports and Dashboards REST API](https://qiita.com/Keiji_otsubo/items/d6ceda32fdd8fe132b60)


1.接続アプリケーション(Manage Connected Apps)の作成。(Consumer KeyとConsumer Secretを後で使います）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a41ed080-4b01-b07b-2209-bd0e5e3a86a8.png)

ここをクリックしてclient_idとclient_secretを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/beab82f7-0d64-6a93-9db9-8ba3cbad85a7.png)


2.「API の有効化」権限があることを確認する 
3.API インテグレーション用の OAuth 設定の有効化 

4.[REST を使用してイベント監視を記述する](https://developer.salesforce.com/docs/atlas.ja-jp.236.0.api_rest.meta/api_rest/dome_event_log_file_describe.htm)

何か間違えたかな？

```
/services/data/v55.0/EventLogFile/describe
[{"errorCode":"NOT_FOUND","message":"The requested resource does not exist"}]
```

sobjects/が抜けてました。

```
/services/data/v55.0/sobjects/EventLogFile/describe
{"actionOverrides":[],"activateable":false,"associateEntityType":null,"associateParentEntity":null,"childRelationships":[],"compactLayoutable":false,"createable":false,"custom":false,"customSetting":false,"deepCloneable":false,"defaultImplementation":null,"deletable":false,"deprecatedAndHidden":false,"extendedBy":null,"extendsInterfaces":null,"feedEnabled":false,"fields":[{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":18,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":false,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":true,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":true,"inlineHelpText":null,"label":"Event Log Files ID","length":18,"mask":null,"maskType":null,"name":"Id","nameField":false,"namePointing":false,"nillable":false,"permissionable":false,"picklistValues":[],"
```

何かいっぱい情報が出てきました。

5.[REST を使用してイベント監視データを照会する](https://developer.salesforce.com/docs/atlas.ja-jp.236.0.api_rest.meta/api_rest/dome_event_log_file_query.htm)

これをやっても何も出力されません。何をしているんだろう？

```
/services/data/v54.0/query?q=SELECT+Id+,+EventType+,+LogFile+
,+LogDate+,+LogFileLength+FROM+EventLogFile+WHERE+
LogDate+>+Yesterday+AND+EventType+=+'API'
```

よく見るとSOQLですよね。では、以下のSOQLを開発者コンソールで見てみると...

select Id,EventType,LogFile,LogDate,LogFileLength from EventLogFile

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/16b28293-82a6-0005-0bef-36343fa20995.png)

EventType='API'がないなぁ。　そりゃぁ何にも出てこなくて正解でしょう。

Loginのログだけを検索してみる

```
/services/data/v54.0/query?q=SELECT+Id+,+EventType+,+LogFile+
,+LogDate+,+LogFileLength+FROM+EventLogFile+WHERE+
EventType+=+'Login'
```

何度やってもこのエラーになる。意味が全くわかん。

```
\nEventLogFile WHERE EventType = Login0\n                              ^\nERROR at Row:1:Column:94\nBind variables only allowed in Apex code","errorCode":"MALFORMED_QUERY"
```

Idが分かれば次に進めるので、このアプローチは諦めます。

6.[レコードからイベント監視コンテンツを取得する](https://developer.salesforce.com/docs/atlas.ja-jp.236.0.api_rest.meta/api_rest/dome_event_log_file_blob.htm)

```
/services/data/v54.0/sobjects/EventLogFile/0AT1000000B8axRGAR/LogFile
```

これを実行すると

CSVファイルが取得できたようです。

```
"EVENT_TYPE","TIMESTAMP","REQUEST_ID","ORGANIZATION_ID","USER_ID","USER_TYPE","SESSION_TYPE","SESSION_LEVEL","BROWSER_TYPE","PLATFORM_TYPE","RESOLUTION_TYPE","APP_TYPE","CLIENT_VERSION","API_TYPE","API_VERSION","USER_INITIATED_LOGOUT","SESSION_KEY","LOGIN_KEY","TIMESTAMP_DERIVED","USER_ID_DERIVED","CLIENT_IP"
"Logout","20220628003826.574","4jmWpfQpAnFtpAHLZGpPe-","00D100000002dlL","005100000094yhd","標準(db=S,api=Standard)","UI","STANDARD(db=1,api=STANDARD)","Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36 Edg/103.0.1264.37","1015","9999","1000","9998.0","","","1","u/zGX0uDBtfE/vnF","a0cfu6NbxsXAnUbM","2022-06-28T00:38:26.574Z","005100000094yhdAAA","223.29.51.94"
"Logout","20220628064309.324","4jmpjPzcVyIhkzIdp8aX3-","00D100000002dlL","005100000094yhN","標準(db=S,api=Standard)","UI","STANDARD(db=1,api=STANDARD)","Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36","1015","9999","1000","9998.0","","","1","XKem2eAAkNnBaeO4","LqWjQ9vQxoMYq45M","2022-06-28T06:43:09.324Z","005100000094yhNAAQ","223.29.51.94"
```