python HEROKU slackbot作成 invalid_auth エラー

slackbotを作成中

下記を参考にさせて頂いた

https://www.virtual-surfer.com/entry/2018/04/05/190000

 

■事象
slackのAPIトークンを設定し、ローカルで実行するとslackbotが起動するが、
HEROKUにデプロイし、HEROKUのサイト上でpbotを実行するとinvalid_authになる
その後、再度ローカルで実行しても同様にinvalid_authとなる


>python run.py
start slackbot
Traceback (most recent call last):
File "run.py", line 9, in <module>
main()
File "run.py", line 4, in main
bot = Bot()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slackbot\bot.py", line 27, in __init__
'BOT_EMOJI') else None
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slackbot\slackclient.py", line 40, in __init__
self.rtm_connect()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slackbot\slackclient.py", line 43, in rtm_connect
reply = self.webapi.rtm.start().body
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slacker\__init__.py", line 822, in start
'mpim_aware': int(mpim_aware),
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slacker\__init__.py", line 120, in get
api, **kwargs
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slacker\__init__.py", line 102, in _request
raise Error(response.error)
slacker.Error: invalid_auth

 

■invalid_authについて確認

https://api.slack.com/methods/auth.test
invalid_auth
Some aspect of authentication cannot be validated. Either the provided token is invalid or the request originates from an IP address disallowed from making the request.

(翻訳こんにゃく結果)
認証の一部の側面を検証できません。 提供されたトークンが無効であるか、要求が、要求の作成を許可されていないIPアドレスから発信されています。

 

■原因
ローカルでテストしたAPIトークンを使用して
HEROKUでslackbotを起動しようとすると、ローカルとは別IPからの接続となるため、
slackの認証エラーとなっていると思われる。

 

■対策
HEROKUにデプロイしてslackbotを起動する際は
改めてAPIトークンを再生成したものを使用する。

 

■修正方法メモ

APIトークンの取得は直書きではなく、
HEROKUのSetting>Config Varsから取得できるようにした

slackbot_settings.py
import os
API_TOKEN = os.environ["AAAAA"]

 

HEROKUのSetting>Config Vars

key:AAAAA

value:(APIトークン)

 

■その他メモ
HEROKUのOverview>Dyno formationでpbot(Procfileに書いたコード)をONにすると、pbotが動く