IntegrationHubのSlack Spokeを使ってService NowからSlackへ通知するための認証情報を取得する(OAuth2.0)

# 概要
* ServiceNowが提供するIntegration hubを使ってServiceNowからSlackへ通知する
* IntegrationHubのSlack Spokeを使う

# 環境
* ServiceNow
    * Version: Madrid
    * 言語: 英語

# 参考文献
* https://docs.servicenow.com/bundle/madrid-servicenow-platform/page/administer/integrationhub/concept/slack-spoke.html

# 実際にやってみる
## Slack側の作業
1. https://api.slack.com/apps へアクセス
2. Create New App
    <img width="728" alt="スクリーンショット 2019-09-30 21.18.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/451c1ced-2c33-be20-181c-92a18d62a4ea.png">

3. お作法通りAPPを作る
    * 認証はOAuth2.0
    * Permissionは文献を参考にす設定するが一部Slackで選択できるものと差異があり戸惑った
        * 試しに設定したもの
        <img width="667" alt="スクリーンショット 2019-09-30 21.22.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/72c4e696-0fca-53a5-d280-0f4af58f92e0.png">

## ServiceNow側の作業
### OAuth プロバイダーとして Slack を登録する
1. System OAuth > Application Registry
2. [New] を押して "Connect to a third party OAuth Provider" を選択
3. Formを埋める
    * 参考文献のDocsだと *Token URL* が間違えているので要注意
    * Token URLは `https://slack.com/api/oauth.access` である必要がある
    <img width="2258" alt="スクリーンショット 2019-09-30 21.31.22のコピー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/4a04b09d-e356-0c35-cbbb-09345ebbd208.png">

4. [save]すると以下2点に情報が追加される
    * Form内の *Redirect URL*
    * Form下部の *OAuth Entry Profiles* にRecordが生成される
    <img width="2255" alt="スクリーンショット 2019-09-30 21.35.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/7b877143-051e-bf1b-8436-1693bb740150.png">

5. (Slack APPでの作業)4で払い出された *Redirect URL* を Slack APPの *Redirect URLs* に設定する
    * 登録画面は該当Slack Appの *OAuth & Permissions* にある

6. このプロバイダを使用する際に要求できるScopeを定義する(文献のDocsには存在しない手順)
    * Form下部のタブから *OAuth Entity Scopes* を選択
    * 表示されるListに直接登録していく(newなどは無いのでListに表示されている空行をダブルクリックして入力)
    <img width="1612" alt="スクリーンショット 2019-09-30 22.02.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/4345b2a3-aa89-991e-d783-55f1dc9cef22.png">

7. [Update]する


### Credential情報の登録
1. Connections & Credentials > Credentials
2. [New] を押して "OAuth 2.0 Credentials" を選択<img width="2084" alt="スクリーンショット 2019-09-30 22.12.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/1f08d95e-af55-86bd-0e24-dc480fa2805e.png">

3. Formを埋める
    <img width="2056" alt="スクリーンショット 2019-09-30 21.43.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/75c2763f-076a-4dfa-3bd0-c0bcbab6ba5f.png">
4. [Submit] する

### 接続情報の設定
1. Connections & Credentials > Connection & Credential Aliases
2. [Slack]を選択
3. タブ[Connections]の[New]
4. Formを埋める
    <img width="2026" alt="スクリーンショット 2019-09-30 21.46.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/356dbc92-62db-05ed-920b-c81456cea334.png">
5. [Submit]する


### OAuth Tokenの取得
1. Connections & Credentials > Credentials
2. "Credential情報の登録" で作成したRecordを選択
3. (参考文献のDocsには存在しない手順)*OAuth Entity Profile* にある <img width="36" alt="スクリーンショット 2019-09-30 22.08.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/3838f363-aaab-8ed9-bbbe-7ac9bf5e2df2.png"> をクリックして [Open Record]を押す
4. (参考文献のDocsには存在しない手順)Slackへ要求するScopeを設定する
    * Related Listとなっている *OAuth Entity Profile Scopes* の空行をダブルクリックして "OAuth プロバイダーとして Slack を登録する" 項の6で定義したScopeを選択する
        * 定義しないと選択出来ないので注意 
    
    <設定前>
    <img width="2082" alt="スクリーンショット 2019-09-30 22.09.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/5a147fc2-0836-9e97-8deb-8bd80eb86da5.png">

    <設定後>
    <img width="2084" alt="スクリーンショット 2019-09-30 22.12.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/feb48eee-27a9-975d-e599-b6cdb2328613.png">


4. [Update]する
5. Related LinksのLabel下にある [Get OAuth Token]をする
    <img width="2085" alt="スクリーンショット 2019-09-30 21.48.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/8e6427b9-814d-f78f-11f6-55750112e1c6.png">
    * みなれたOAuthの許可画面が出るので項目を確認して [Allow] する
    <img width="648" alt="スクリーンショット 2019-09-30 22.15.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/29f4513c-635f-ed0a-9eaf-796878fed6ca.png">
6. System OAuth > Manage Tokens
7. Tokenが生成されていることが確認できる
    <img width="2064" alt="スクリーンショット 2019-09-30 22.16.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20570/4fd98077-afd3-b426-8a47-f98a46d08a43.png">

以上でSlack Spokeを使用する認証周りが完了です。